<?xml version="1.0"?>
<doc>
    <assembly>
        <name>StardewModdingAPI</name>
    </assembly>
    <members>
        <member name="T:StardewModdingAPI.EarlyConstants">
            <summary>Contains constants that are accessed before the game itself has been loaded.</summary>
            <remarks>Most code should use <see cref="T:StardewModdingAPI.Constants"/> instead of this class directly.</remarks>
        </member>
        <member name="P:StardewModdingAPI.EarlyConstants.GamePath">
            <summary>The path to the game folder.</summary>
        </member>
        <member name="F:StardewModdingAPI.EarlyConstants.InternalFilesPath">
            <summary>The absolute path to the folder containing SMAPI's internal files.</summary>
        </member>
        <member name="P:StardewModdingAPI.EarlyConstants.Platform">
            <summary>The target game platform.</summary>
        </member>
        <member name="P:StardewModdingAPI.EarlyConstants.GameFramework">
            <summary>The game framework running the game.</summary>
        </member>
        <member name="P:StardewModdingAPI.EarlyConstants.GameAssemblyName">
            <summary>The game's assembly name.</summary>
        </member>
        <member name="P:StardewModdingAPI.EarlyConstants.LogScreenId">
            <summary>The <see cref="P:StardewModdingAPI.Context.ScreenId"/> value which should appear in the SMAPI log, if any.</summary>
        </member>
        <member name="F:StardewModdingAPI.EarlyConstants.RawApiVersion">
            <summary>SMAPI's current raw semantic version.</summary>
        </member>
        <member name="T:StardewModdingAPI.Constants">
            <summary>Contains SMAPI's constants and assumptions.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.ApiVersion">
            <summary>SMAPI's current semantic version.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.MinimumGameVersion">
            <summary>The minimum supported version of Stardew Valley.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.MaximumGameVersion">
            <summary>The maximum supported version of Stardew Valley, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.TargetPlatform">
            <summary>The target game platform.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.GameFramework">
            <summary>The game framework running the game.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.GamePath">
            <summary>The path to the game folder.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.ContentPath">
            <summary>The path to the game's <c>Content</c> folder.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.DataPath">
            <summary>The directory path containing Stardew Valley's app data.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.LogDir">
            <summary>The directory path in which error logs should be stored.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.SavesPath">
            <summary>The directory path where all saves are stored.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.SaveFolderName">
            <summary>The name of the current save folder (if save info is available, regardless of whether the save file exists yet).</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.CurrentSavePath">
            <summary>The absolute path to the current save folder (if save info is available and the save file exists).</summary>
        </member>
        <member name="F:StardewModdingAPI.Constants.IsDebugBuild">
            <summary>Whether SMAPI was compiled in debug mode.</summary>
        </member>
        <member name="F:StardewModdingAPI.Constants.HomePageUrl">
            <summary>The URL of the SMAPI home page.</summary>
        </member>
        <member name="F:StardewModdingAPI.Constants.InternalFilesPath">
            <summary>The absolute path to the folder containing SMAPI's internal files.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.ApiConfigPath">
            <summary>The file path for the SMAPI configuration file.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.ApiUserConfigPath">
            <summary>The file path for the per-user <see cref="P:StardewModdingAPI.Constants.ApiConfigPath"/> override file, which is applied over it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.ApiModGroupConfigPath">
            <summary>The file path for the per-mods-folder <see cref="P:StardewModdingAPI.Constants.ApiConfigPath"/> override file, which is applied over it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.ApiMetadataPath">
            <summary>The file path for the SMAPI metadata file.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.LogNamePrefix">
            <summary>The filename prefix used for all SMAPI logs.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.LogFilename">
            <summary>The filename for SMAPI's main log, excluding the <see cref="P:StardewModdingAPI.Constants.LogExtension"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.LogExtension">
            <summary>The filename extension for SMAPI log files.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.FatalCrashLog">
            <summary>The file path for the log containing the previous fatal crash, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.FatalCrashMarker">
            <summary>The file path which stores a fatal crash message for the next run.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.UpdateMarker">
            <summary>The file path which stores the detected update version for the next run.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.DefaultModsPath">
            <summary>The default full path to search for mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.ModsPath">
            <summary>The actual full path to search for mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.GameVersion">
            <summary>The game's current semantic version.</summary>
        </member>
        <member name="P:StardewModdingAPI.Constants.Platform">
            <summary>The target game platform as a SMAPI toolkit constant.</summary>
        </member>
        <member name="M:StardewModdingAPI.Constants.GetCompatibleApiVersion(StardewModdingAPI.ISemanticVersion)">
            <summary>Get the SMAPI version to recommend for an older game version, if any.</summary>
            <param name="version">The game version to search.</param>
            <returns>Returns the compatible SMAPI version, or <c>null</c> if none was found.</returns>
        </member>
        <member name="M:StardewModdingAPI.Constants.ConfigureAssemblyResolver(StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver)">
            <summary>Configure the Mono.Cecil assembly resolver.</summary>
            <param name="resolver">The assembly resolver.</param>
        </member>
        <member name="M:StardewModdingAPI.Constants.GetAssemblyMap(StardewModdingAPI.Toolkit.Utilities.Platform)">
            <summary>Get metadata for mapping assemblies to the current platform.</summary>
            <param name="targetPlatform">The target game platform.</param>
        </member>
        <member name="M:StardewModdingAPI.Constants.GetContentFolderPath">
            <summary>Get the absolute path to the game's <c>Content</c> folder.</summary>
        </member>
        <member name="M:StardewModdingAPI.Constants.GetSaveFolderName">
            <summary>Get the name of the save folder, if any.</summary>
        </member>
        <member name="M:StardewModdingAPI.Constants.GetSaveFolderPathIfExists">
            <summary>Get the absolute path to the current save folder, if any.</summary>
        </member>
        <member name="M:StardewModdingAPI.Constants.GetSaveFolder">
            <summary>Get the current save folder, if any.</summary>
        </member>
        <member name="M:StardewModdingAPI.Constants.GetBuildVersionLabel">
            <summary>Get a display label for the game's build number.</summary>
        </member>
        <member name="T:StardewModdingAPI.ContentSource">
            <summary>Specifies a source containing content that can be loaded.</summary>
        </member>
        <member name="F:StardewModdingAPI.ContentSource.GameContent">
            <summary>Assets in the game's content manager (i.e. XNBs in the game's content folder).</summary>
        </member>
        <member name="F:StardewModdingAPI.ContentSource.ModFolder">
            <summary>XNB files in the current mod's folder.</summary>
        </member>
        <member name="T:StardewModdingAPI.Context">
            <summary>Provides information about the current game state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Context.IsWorldReadyForScreen">
            <summary>Whether the player has loaded a save and the world has finished initializing.</summary>
        </member>
        <member name="F:StardewModdingAPI.Context.LoadStageForScreen">
            <summary>The current stage in the game's loading process.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsSaveLoaded">
            <summary>Whether a player save has been loaded.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsSaving">
            <summary>Whether the game is currently writing to the save file.</summary>
        </member>
        <member name="F:StardewModdingAPI.Context.ActiveScreenIds">
            <summary>The active split-screen instance IDs.</summary>
        </member>
        <member name="F:StardewModdingAPI.Context.LastRemovedScreenId">
            <summary>The last screen ID that was removed from the game, used to synchronize <see cref="T:StardewModdingAPI.Utilities.PerScreen`1"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.LoadStage">
            <summary>The current stage in the game's loading process.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsWorldFullyUnloaded">
            <summary>Whether the in-game world is completely unloaded and not in the process of being loaded. The world may still exist in memory at this point, but should be ignored.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.HeuristicModsRunningCode">
            <summary>If SMAPI is currently waiting for mod code, the mods to which it belongs (with the most recent at the top of the stack).</summary>
            <remarks><strong>This is heuristic only.</strong> It provides a quick way to identify the most likely mod for deprecation warnings, but it should be followed with a more accurate check if needed.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Context.IsGameLaunched">
            <summary>Whether the game has performed core initialization. This becomes true right before the first update tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsWorldReady">
            <summary>Whether the player has loaded a save and the world has finished initializing.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsPlayerFree">
            <summary>Whether <see cref="P:StardewModdingAPI.Context.IsWorldReady"/> is true and the player is free to act in the world (no menu is displayed, no cutscene is in progress, etc).</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.CanPlayerMove">
            <summary>Whether <see cref="P:StardewModdingAPI.Context.IsPlayerFree"/> is true and the player is free to move (e.g. not using a tool).</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsInDrawLoop">
            <summary>Whether the game is currently running the draw loop. This isn't relevant to most mods, since you should use <see cref="T:StardewModdingAPI.Events.IDisplayEvents"/> events to draw to the screen.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.ScreenId">
            <summary>The unique ID of the current screen in split-screen mode. A screen is always assigned a new ID when it's opened (so a player who quits and rejoins has a new screen ID).</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsMultiplayer">
            <summary>Whether the game is running in multiplayer or split-screen mode (regardless of whether any other players are connected). See <see cref="P:StardewModdingAPI.Context.IsSplitScreen"/> and <see cref="P:StardewModdingAPI.Context.HasRemotePlayers"/> for more specific checks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsOnHostComputer">
            <summary>Whether this player is running on the main player's computer. This is true for both the main player and split-screen players.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsSplitScreen">
            <summary>Whether the current player is playing in a split-screen. This is only applicable when <see cref="P:StardewModdingAPI.Context.IsOnHostComputer"/> is true, since split-screen players on another computer are just regular remote players.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.HasRemotePlayers">
            <summary>Whether there are players connected over the network.</summary>
        </member>
        <member name="P:StardewModdingAPI.Context.IsMainPlayer">
            <summary>Whether the current player is the main player. This is always true in single-player, and true when hosting in multiplayer.</summary>
        </member>
        <member name="M:StardewModdingAPI.Context.HasScreenId(System.Int32)">
            <summary>Get whether a screen ID is still active.</summary> <param name="id">The screen ID.</param>
        </member>
        <member name="T:StardewModdingAPI.Enums.LoadStage">
            <summary>A low-level stage in the game's loading process.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.None">
            <summary>A save is not loaded or loading.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.CreatedBasicInfo">
            <summary>The game is creating a new save slot, and has initialized the basic save info.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.CreatedInitialLocations">
            <summary>The game is creating a new save slot, and has added the location instances but hasn't fully initialized them yet.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.CreatedLocations">
            <summary>The game is creating a new save slot, and has initialized the in-game locations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.CreatedSaveFile">
            <summary>The game is creating a new save slot, and has created the physical save files.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.SaveParsed">
            <summary>The game is loading a save slot, and has read the raw save data into <see cref="F:StardewValley.SaveGame.loaded"/>. Not applicable when connecting to a multiplayer host. This is equivalent to <see cref="M:StardewValley.SaveGame.getLoadEnumerator(System.String)"/> value 20.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.SaveLoadedBasicInfo">
            <summary>The game is loading a save slot, and has applied the basic save info (including player data). Not applicable when connecting to a multiplayer host. Note that some basic info (like daily luck) is not initialized at this point. This is equivalent to <see cref="M:StardewValley.SaveGame.getLoadEnumerator(System.String)"/> value 36.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.SaveAddedLocations">
            <summary>The game is loading a save slot and has added the location instances, but hasn't restored their save data yet. Not applicable when connecting to a multiplayer host.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.SaveLoadedLocations">
            <summary>The game is loading a save slot, and has restored the in-game location data. Not applicable when connecting to a multiplayer host. This is equivalent to <see cref="M:StardewValley.SaveGame.getLoadEnumerator(System.String)"/> value 50.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.Preloaded">
            <summary>The final metadata has been loaded from the save file. This happens before the game applies problem fixes, checks for achievements, starts music, etc. Not applicable when connecting to a multiplayer host.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.Loaded">
            <summary>The save is fully loaded, but the world may not be fully initialized yet.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.Ready">
            <summary>The save is fully loaded, the world has been initialized, and <see cref="P:StardewModdingAPI.Context.IsWorldReady"/> is now true.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.LoadStage.ReturningToTitle">
            <summary>The game is exiting the loaded save and returning to the title screen. This happens before it returns to title; see <see cref="F:StardewModdingAPI.Enums.LoadStage.None"/> after it returns.</summary>
        </member>
        <member name="T:StardewModdingAPI.Enums.SkillType">
            <summary>The player skill types.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.SkillType.Combat">
            <summary>The combat skill.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.SkillType.Farming">
            <summary>The farming skill.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.SkillType.Fishing">
            <summary>The fishing skill.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.SkillType.Foraging">
            <summary>The foraging skill.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.SkillType.Mining">
            <summary>The mining skill.</summary>
        </member>
        <member name="F:StardewModdingAPI.Enums.SkillType.Luck">
            <summary>The luck skill.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.AssetEditPriority">
            <summary>The priority for an asset edit when multiple apply for the same asset.</summary>
            <remarks>You can also specify arbitrary intermediate values, like <c>AssetEditPriority.Early + 5</c>.</remarks>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetEditPriority.Early">
            <summary>This edit should be applied before (i.e. 'under') <see cref="F:StardewModdingAPI.Events.AssetEditPriority.Default"/> edits.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetEditPriority.Default">
            <summary>The default priority.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetEditPriority.Late">
            <summary>This edit should be applied after (i.e. 'on top of') <see cref="F:StardewModdingAPI.Events.AssetEditPriority.Default"/> edits.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.AssetLoadPriority">
            <summary>The priority for an asset load when multiple apply for the same asset.</summary>
            <remarks>If multiple non-<see cref="F:StardewModdingAPI.Events.AssetLoadPriority.Exclusive"/> loads have the same priority, the one registered first will be selected. You can also specify arbitrary intermediate values, like <c>AssetLoadPriority.Low + 5</c>.</remarks>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetLoadPriority.Low">
            <summary>This load is optional and can safely be skipped if there are higher-priority loads.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetLoadPriority.Medium">
            <summary>The load is optional and can safely be skipped if there are higher-priority loads, but it should still be preferred over any <see cref="F:StardewModdingAPI.Events.AssetLoadPriority.Low"/>-priority loads.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetLoadPriority.High">
            <summary>The load is optional and can safely be skipped if there are higher-priority loads, but it should still be preferred over any <see cref="F:StardewModdingAPI.Events.AssetLoadPriority.Low"/>- or <see cref="F:StardewModdingAPI.Events.AssetLoadPriority.Medium"/>-priority loads.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetLoadPriority.Exclusive">
            <summary>The load is not optional. If more than one loader has <see cref="F:StardewModdingAPI.Events.AssetLoadPriority.Exclusive"/> priority, SMAPI will log an error and ignore all of them.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.AssetReadyEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetReady"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetReadyEventArgs.Name">
            <summary>The name of the asset being requested.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetReadyEventArgs.NameWithoutLocale">
            <summary>The <see cref="P:StardewModdingAPI.Events.AssetReadyEventArgs.Name"/> with any locale codes stripped.</summary>
            <remarks>For example, if <see cref="P:StardewModdingAPI.Events.AssetReadyEventArgs.Name"/> contains a locale like <c>Data/Bundles.fr-FR</c>, this will be the name without locale like <c>Data/Bundles</c>. If the name has no locale, this field is equivalent.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Events.AssetReadyEventArgs.#ctor(StardewModdingAPI.IAssetName,StardewModdingAPI.IAssetName)">
            <summary>Construct an instance.</summary>
            <param name="name">The name of the asset being requested.</param>
            <param name="nameWithoutLocale">The <paramref name="name"/> with any locale codes stripped.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.AssetRequestedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetRequested"/> event.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetRequestedEventArgs.Mod">
            <summary>The mod handling the event.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetRequestedEventArgs.GetOnBehalfOf">
            <summary>Get the mod metadata for a content pack, if it's a valid content pack for the mod.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.AssetRequestedEventArgs.AssetInfo">
            <summary>The asset info being requested.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetRequestedEventArgs.Name">
            <summary>The name of the asset being requested.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetRequestedEventArgs.NameWithoutLocale">
            <summary>The <see cref="P:StardewModdingAPI.Events.AssetRequestedEventArgs.Name"/> with any locale codes stripped.</summary>
            <remarks>For example, if <see cref="P:StardewModdingAPI.Events.AssetRequestedEventArgs.Name"/> contains a locale like <c>Data/Bundles.fr-FR</c>, this will be the name without locale like <c>Data/Bundles</c>. If the name has no locale, this field is equivalent.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetRequestedEventArgs.DataType">
            <summary>The requested data type.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetRequestedEventArgs.LoadOperations">
            <summary>The load operations requested by the event handler.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetRequestedEventArgs.EditOperations">
            <summary>The edit operations requested by the event handler.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.AssetRequestedEventArgs.#ctor(StardewModdingAPI.IAssetInfo,System.Func{StardewModdingAPI.Framework.IModMetadata,System.String,System.String,StardewModdingAPI.Framework.IModMetadata})">
            <summary>Construct an instance.</summary>
            <param name="assetInfo">The asset info being requested.</param>
            <param name="getOnBehalfOf">Get the mod metadata for a content pack, if it's a valid content pack for the mod.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.AssetRequestedEventArgs.SetMod(StardewModdingAPI.Framework.IModMetadata)">
            <summary>Set the mod handling the event.</summary>
            <param name="mod">The mod handling the event.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.AssetRequestedEventArgs.LoadFrom(System.Func{System.Object},StardewModdingAPI.Events.AssetLoadPriority,System.String)">
            <summary>Provide the initial instance for the asset, instead of trying to load it from the game's <c>Content</c> folder.</summary>
            <param name="load">Get the initial instance of an asset.</param>
            <param name="priority">If there are multiple loads that apply to the same asset, the priority with which this one should be applied.</param>
            <param name="onBehalfOf">The content pack ID on whose behalf you're applying the change. This is only valid for content packs for your mod.</param>
            <remarks>
            Usage notes:
            <list type="bullet">
              <item>The asset doesn't need to exist in the game's <c>Content</c> folder. If any mod loads the asset, the game will see it as an existing asset as if it was in that folder.</item>
              <item>Each asset can logically only have one initial instance. If multiple loads apply at the same time, SMAPI will use the <paramref name="priority"/> parameter to decide what happens. If you're making changes to the existing asset instead of replacing it, you should use <see cref="M:StardewModdingAPI.Events.AssetRequestedEventArgs.Edit(System.Action{StardewModdingAPI.IAssetData},StardewModdingAPI.Events.AssetEditPriority,System.String)"/> instead to avoid those limitations and improve mod compatibility.</item>
              <item><strong>Do not return a cached instance.</strong> SMAPI takes ownership of the returned asset and may edit, resize, or dispose it as needed. Returning a cached instance may cause object-disposed errors or cache poisoning (where reloading the asset doesn't undo previously applied edits). If you need a reference to the final edited asset, use the <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetReady"/> event.</item>
            </list>
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Events.AssetRequestedEventArgs.LoadFromModFile``1(System.String,StardewModdingAPI.Events.AssetLoadPriority)">
            <summary>Provide the initial instance for the asset from a file in your mod folder, instead of trying to load it from the game's <c>Content</c> folder.</summary>
            <typeparam name="TAsset">The expected data type. The main supported types are <see cref="T:xTile.Map"/>, <see cref="T:Microsoft.Xna.Framework.Graphics.Texture2D"/>, dictionaries, and lists; other types may be supported by the game's content pipeline.</typeparam>
            <param name="relativePath">The relative path to the file in your mod folder.</param>
            <param name="priority">If there are multiple loads that apply to the same asset, the priority with which this one should be applied.</param>
            <inheritdoc cref="M:StardewModdingAPI.Events.AssetRequestedEventArgs.LoadFrom(System.Func{System.Object},StardewModdingAPI.Events.AssetLoadPriority,System.String)" path="/remarks" />
        </member>
        <member name="M:StardewModdingAPI.Events.AssetRequestedEventArgs.Edit(System.Action{StardewModdingAPI.IAssetData},StardewModdingAPI.Events.AssetEditPriority,System.String)">
            <summary>Edit the asset after it's loaded.</summary>
            <param name="apply">Apply changes to the asset.</param>
            <param name="priority">If there are multiple edits that apply to the same asset, the priority with which this one should be applied.</param>
            <param name="onBehalfOf">The content pack ID on whose behalf you're applying the change. This is only valid for content packs for your mod.</param>
            <remarks>
            Usage notes:
            <list type="bullet">
              <item>Editing an asset which doesn't exist has no effect. This is applied after the asset is loaded from the game's <c>Content</c> folder, or from any mod's <see cref="M:StardewModdingAPI.Events.AssetRequestedEventArgs.LoadFrom(System.Func{System.Object},StardewModdingAPI.Events.AssetLoadPriority,System.String)"/> or <see cref="M:StardewModdingAPI.Events.AssetRequestedEventArgs.LoadFromModFile``1(System.String,StardewModdingAPI.Events.AssetLoadPriority)"/>.</item>
              <item>You can apply any number of edits to the asset. Each edit will be applied on top of the previous one (i.e. it'll see the merged asset from all previous edits as its input).</item>
            </list>
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Events.AssetRequestedEventArgs.GetMod">
            <summary>Get the mod handling the event.</summary>
            <exception cref="T:System.InvalidOperationException">This instance hasn't been initialized with the mod metadata yet.</exception>
        </member>
        <member name="T:StardewModdingAPI.Events.AssetsInvalidatedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetsInvalidated"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetsInvalidatedEventArgs.Names">
            <summary>The asset names that were invalidated.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.AssetsInvalidatedEventArgs.NamesWithoutLocale">
            <summary>The <see cref="P:StardewModdingAPI.Events.AssetsInvalidatedEventArgs.Names"/> with any locale codes stripped.</summary>
            <remarks>For example, if <see cref="P:StardewModdingAPI.Events.AssetsInvalidatedEventArgs.Names"/> contains a locale like <c>Data/Bundles.fr-FR</c>, this will have the name without locale like <c>Data/Bundles</c>. If the name has no locale, this field is equivalent.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Events.AssetsInvalidatedEventArgs.#ctor(System.Collections.Generic.IEnumerable{StardewModdingAPI.IAssetName},System.Collections.Generic.IEnumerable{StardewModdingAPI.IAssetName})">
            <summary>Construct an instance.</summary>
            <param name="names">The asset names that were invalidated.</param>
            <param name="namesWithoutLocale">The <paramref name="names"/> with any locale codes stripped.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.BuildingListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.BuildingListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.BuildingListChangedEventArgs.Location">
            <summary>The location which changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.BuildingListChangedEventArgs.Added">
            <summary>The buildings added to the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.BuildingListChangedEventArgs.Removed">
            <summary>The buildings removed from the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.BuildingListChangedEventArgs.IsCurrentLocation">
            <summary>Whether this is the location containing the local player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.BuildingListChangedEventArgs.#ctor(StardewValley.GameLocation,System.Collections.Generic.IEnumerable{StardewValley.Buildings.Building},System.Collections.Generic.IEnumerable{StardewValley.Buildings.Building})">
            <summary>Construct an instance.</summary>
            <param name="location">The location which changed.</param>
            <param name="added">The buildings added to the location.</param>
            <param name="removed">The buildings removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.ButtonPressedEventArgs">
            <summary>Event arguments when a button is pressed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.ButtonPressedEventArgs.InputState">
            <summary>The game's current input state.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonPressedEventArgs.Button">
            <summary>The button on the controller, keyboard, or mouse.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonPressedEventArgs.Cursor">
            <summary>The current cursor position.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonPressedEventArgs.#ctor(StardewModdingAPI.SButton,StardewModdingAPI.ICursorPosition,StardewModdingAPI.Framework.Input.SInputState)">
            <summary>Construct an instance.</summary>
            <param name="button">The button on the controller, keyboard, or mouse.</param>
            <param name="cursor">The cursor position.</param>
            <param name="inputState">The game's current input state.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonPressedEventArgs.IsSuppressed">
            <summary>Get whether a mod has indicated the key was already handled, so the game shouldn't handle it.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonPressedEventArgs.IsSuppressed(StardewModdingAPI.SButton)">
            <summary>Get whether a mod has indicated the key was already handled, so the game shouldn't handle it.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonPressedEventArgs.IsDown(StardewModdingAPI.SButton)">
            <summary>Get whether a given button was pressed or held.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.ButtonReleasedEventArgs">
            <summary>Event arguments when a button is released.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.ButtonReleasedEventArgs.InputState">
            <summary>The game's current input state.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonReleasedEventArgs.Button">
            <summary>The button on the controller, keyboard, or mouse.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonReleasedEventArgs.Cursor">
            <summary>The current cursor position.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonReleasedEventArgs.#ctor(StardewModdingAPI.SButton,StardewModdingAPI.ICursorPosition,StardewModdingAPI.Framework.Input.SInputState)">
            <summary>Construct an instance.</summary>
            <param name="button">The button on the controller, keyboard, or mouse.</param>
            <param name="cursor">The cursor position.</param>
            <param name="inputState">The game's current input state.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonReleasedEventArgs.IsSuppressed">
            <summary>Get whether a mod has indicated the key was already handled, so the game shouldn't handle it.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonReleasedEventArgs.IsSuppressed(StardewModdingAPI.SButton)">
            <summary>Get whether a mod has indicated the key was already handled, so the game shouldn't handle it.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonReleasedEventArgs.IsDown(StardewModdingAPI.SButton)">
            <summary>Get whether a given button was pressed or held.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.ButtonsChangedEventArgs">
            <summary>Event arguments when any buttons were pressed or released.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.ButtonsChangedEventArgs.ButtonsByState">
            <summary>The buttons that were pressed, held, or released since the previous tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonsChangedEventArgs.Cursor">
            <summary>The current cursor position.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonsChangedEventArgs.Pressed">
            <summary>The buttons which were pressed since the previous tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonsChangedEventArgs.Held">
            <summary>The buttons which were held since the previous tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ButtonsChangedEventArgs.Released">
            <summary>The buttons which were released since the previous tick.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonsChangedEventArgs.#ctor(StardewModdingAPI.ICursorPosition,StardewModdingAPI.Framework.Input.SInputState)">
            <summary>Construct an instance.</summary>
            <param name="cursor">The cursor position.</param>
            <param name="inputState">The game's current input state.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.ButtonsChangedEventArgs.GetButtonsByState(StardewModdingAPI.Framework.Input.SInputState)">
            <summary>Get the buttons that were pressed, held, or released since the previous tick.</summary>
            <param name="inputState">The game's current input state.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.ChestInventoryChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.ChestInventoryChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ChestInventoryChangedEventArgs.Chest">
            <summary>The chest whose inventory changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ChestInventoryChangedEventArgs.Location">
            <summary>The location containing the chest.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ChestInventoryChangedEventArgs.Added">
            <summary>The added item stacks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ChestInventoryChangedEventArgs.Removed">
            <summary>The removed item stacks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ChestInventoryChangedEventArgs.QuantityChanged">
            <summary>The item stacks whose size changed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ChestInventoryChangedEventArgs.#ctor(StardewValley.Objects.Chest,StardewValley.GameLocation,StardewValley.Item[],StardewValley.Item[],StardewModdingAPI.Events.ItemStackSizeChange[])">
            <summary>Construct an instance.</summary>
            <param name="chest">The chest whose inventory changed.</param>
            <param name="location">The location containing the chest.</param>
            <param name="added">The added item stacks.</param>
            <param name="removed">The removed item stacks.</param>
            <param name="quantityChanged">The item stacks whose size changed.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.CursorMovedEventArgs">
            <summary>Event arguments when the in-game cursor is moved.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.CursorMovedEventArgs.OldPosition">
            <summary>The previous cursor position.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.CursorMovedEventArgs.NewPosition">
            <summary>The current cursor position.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.CursorMovedEventArgs.#ctor(StardewModdingAPI.ICursorPosition,StardewModdingAPI.ICursorPosition)">
            <summary>Construct an instance.</summary>
            <param name="oldPosition">The previous cursor position.</param>
            <param name="newPosition">The new cursor position.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.DayEndingEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.DayEnding"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.DayStartedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.DayStarted"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.DebrisListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.DebrisListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.DebrisListChangedEventArgs.Location">
            <summary>The location which changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.DebrisListChangedEventArgs.Added">
            <summary>The debris added to the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.DebrisListChangedEventArgs.Removed">
            <summary>The debris removed from the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.DebrisListChangedEventArgs.IsCurrentLocation">
            <summary>Whether this is the location containing the local player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.DebrisListChangedEventArgs.#ctor(StardewValley.GameLocation,System.Collections.Generic.IEnumerable{StardewValley.Debris},System.Collections.Generic.IEnumerable{StardewValley.Debris})">
            <summary>Construct an instance.</summary>
            <param name="location">The location which changed.</param>
            <param name="added">The debris added to the location.</param>
            <param name="removed">The debris removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.EventPriority">
            <summary>The event priorities for method handlers.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.EventPriority.Low">
            <summary>Low priority.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.EventPriority.Normal">
            <summary>The default priority.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.EventPriority.High">
            <summary>High priority.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.EventPriorityAttribute">
            <summary>An attribute which specifies the priority for an event handler.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.EventPriorityAttribute.Priority">
            <summary>The event handler priority, relative to other handlers across all mods registered for this event.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.EventPriorityAttribute.#ctor(StardewModdingAPI.Events.EventPriority)">
            <summary>Construct an instance.</summary>
            <param name="priority">The event handler priority, relative to other handlers across all mods registered for this event. Higher-priority handlers are notified before lower-priority handlers.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.FurnitureListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.FurnitureListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.FurnitureListChangedEventArgs.Location">
            <summary>The location which changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.FurnitureListChangedEventArgs.Added">
            <summary>The furniture added to the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.FurnitureListChangedEventArgs.Removed">
            <summary>The furniture removed from the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.FurnitureListChangedEventArgs.IsCurrentLocation">
            <summary>Whether this is the location containing the local player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.FurnitureListChangedEventArgs.#ctor(StardewValley.GameLocation,System.Collections.Generic.IEnumerable{StardewValley.Objects.Furniture},System.Collections.Generic.IEnumerable{StardewValley.Objects.Furniture})">
            <summary>Construct an instance.</summary>
            <param name="location">The location which changed.</param>
            <param name="added">The furniture added to the location.</param>
            <param name="removed">The furniture removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.GameLaunchedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.GameLaunched"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.IContentEvents">
            <summary>Events related to assets loaded from the content pipeline (including data, maps, and textures).</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IContentEvents.AssetRequested">
             <summary>Raised when an asset is being requested from the content pipeline.</summary>
             <remarks>
             The asset isn't necessarily being loaded yet (e.g. the game may be checking if it exists). Mods can register the changes they want to apply using methods on the event arguments. These will be applied when the asset is actually loaded.
            
             If the asset is requested multiple times in the same tick (e.g. once to check if it exists and once to load it), SMAPI might only raise the event once and reuse the cached result.
             </remarks>
        </member>
        <member name="E:StardewModdingAPI.Events.IContentEvents.AssetsInvalidated">
            <summary>Raised after one or more assets were invalidated from the content cache by a mod, so they'll be reloaded next time they're requested. If the assets will be reloaded or propagated automatically, this event is raised before that happens.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IContentEvents.AssetReady">
            <summary>Raised after an asset is loaded by the content pipeline, after all mod edits specified via <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetRequested"/> have been applied.</summary>
            <remarks>This event is only raised if something requested the asset from the content pipeline. Invalidating an asset from the content cache won't necessarily reload it automatically.</remarks>
        </member>
        <member name="E:StardewModdingAPI.Events.IContentEvents.LocaleChanged">
            <summary>Raised after the game language changes.</summary>
            <remarks>For non-English players, this may be raised during startup when the game switches to the previously selected language.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Events.IDisplayEvents">
            <summary>Events related to UI and drawing to the screen.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.MenuChanged">
            <summary>Raised after a game menu is opened, closed, or replaced.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderingStep">
            <summary>Raised before the game draws a specific step in the rendering cycle.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderedStep">
            <summary>Raised after the game draws a specific step in the rendering cycle.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.Rendering">
            <summary>Raised before the game draws anything to the screen in a draw tick, as soon as the sprite batch is opened. The sprite batch may be closed and reopened multiple times after this event is called, but it's only raised once per draw tick. This event isn't useful for drawing to the screen, since the game will draw over it.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.Rendered">
            <summary>Raised after the game draws to the sprite patch in a draw tick, just before the final sprite batch is rendered to the screen. Since the game may open/close the sprite batch multiple times in a draw tick, the sprite batch may not contain everything being drawn and some things may already be rendered to the screen. Content drawn to the sprite batch at this point will be drawn over all vanilla content (including menus, HUD, and cursor).</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderingWorld">
            <summary>Raised before the game world is drawn to the screen. This event isn't useful for drawing to the screen, since the game will draw over it.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderedWorld">
            <summary>Raised after the game world is drawn to the sprite patch, before it's rendered to the screen. Content drawn to the sprite batch at this point will be drawn over the world, but under any active menu, HUD elements, or cursor.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderingActiveMenu">
            <summary>When a menu is open (<see cref="P:StardewValley.Game1.activeClickableMenu"/> isn't null), raised before that menu is drawn to the screen. This includes the game's internal menus like the title screen. Content drawn to the sprite batch at this point will appear under the menu.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderedActiveMenu">
            <summary>When a menu is open (<see cref="P:StardewValley.Game1.activeClickableMenu"/> isn't null), raised after that menu is drawn to the sprite batch but before it's rendered to the screen. Content drawn to the sprite batch at this point will appear over the menu and menu cursor.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderingHud">
            <summary>Raised before drawing the HUD (item toolbar, clock, etc) to the screen. The vanilla HUD may be hidden at this point (e.g. because a menu is open). Content drawn to the sprite batch at this point will appear under the HUD.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.RenderedHud">
            <summary>Raised after drawing the HUD (item toolbar, clock, etc) to the sprite batch, but before it's rendered to the screen. The vanilla HUD may be hidden at this point (e.g. because a menu is open). Content drawn to the sprite batch at this point will appear over the HUD.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IDisplayEvents.WindowResized">
            <summary>Raised after the game window is resized.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.IGameLoopEvents">
            <summary>Events linked to the game's update loop. The update loop runs roughly ≈60 times/second to run game logic like state changes, action handling, etc. These can be useful, but you should consider more semantic events like <see cref="T:StardewModdingAPI.Events.IInputEvents"/> if possible.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.GameLaunched">
            <summary>Raised after the game is launched, right before the first update tick. This happens once per game session (unrelated to loading saves). All mods are loaded and initialized at this point, so this is a good time to set up mod integrations.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.UpdateTicking">
            <summary>Raised before the game state is updated (≈60 times per second).</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.UpdateTicked">
            <summary>Raised after the game state is updated (≈60 times per second).</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.OneSecondUpdateTicking">
            <summary>Raised once per second before the game state is updated.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.OneSecondUpdateTicked">
            <summary>Raised once per second after the game state is updated.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.SaveCreating">
            <summary>Raised before the game creates a new save file.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.SaveCreated">
            <summary>Raised after the game finishes creating the save file.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.Saving">
            <summary>Raised before the game begins writing data to the save file (except the initial save creation).</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.Saved">
            <summary>Raised after the game finishes writing data to the save file (except the initial save creation).</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.SaveLoaded">
            <summary>Raised after the player loads a save slot and the world is initialized.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.DayStarted">
            <summary>Raised after the game begins a new day (including when the player loads a save).</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.DayEnding">
            <summary>Raised before the game ends the current day. This happens before it starts setting up the next day and before <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.Saving"/>.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.TimeChanged">
            <summary>Raised after the in-game clock time changes.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IGameLoopEvents.ReturnedToTitle">
            <summary>Raised after the game returns to the title screen.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.IInputEvents">
            <summary>Events raised when the player provides input using a controller, keyboard, or mouse.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IInputEvents.ButtonsChanged">
            <summary>Raised after the player presses or releases any buttons on the keyboard, controller, or mouse.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IInputEvents.ButtonPressed">
            <summary>Raised after the player presses a button on the keyboard, controller, or mouse.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IInputEvents.ButtonReleased">
            <summary>Raised after the player releases a button on the keyboard, controller, or mouse.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IInputEvents.CursorMoved">
            <summary>Raised after the player moves the in-game cursor.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IInputEvents.MouseWheelScrolled">
            <summary>Raised after the player scrolls the mouse wheel.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.IModEvents">
            <summary>Manages access to events raised by SMAPI.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.Content">
            <summary>Events related to assets loaded from the content pipeline (including data, maps, and textures).</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.Display">
            <summary>Events related to UI and drawing to the screen.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.GameLoop">
            <summary>Events linked to the game's update loop. The update loop runs roughly ≈60 times/second to run game logic like state changes, action handling, etc. These can be useful, but you should consider more semantic events like <see cref="P:StardewModdingAPI.Events.IModEvents.Input"/> if possible.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.Input">
            <summary>Events raised when the player provides input using a controller, keyboard, or mouse.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.Multiplayer">
            <summary>Events raised for multiplayer messages and connections.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.Player">
            <summary>Events raised when the player data changes.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.World">
            <summary>Events raised when something changes in the world.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.IModEvents.Specialized">
            <summary>Events serving specialized edge cases that shouldn't be used by most mods.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.IMultiplayerEvents">
            <summary>Events raised for multiplayer messages and connections.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerContextReceived">
            <summary>Raised after the mod context for a peer is received. This happens before the game approves the connection (<see cref="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerConnected"/>), so the player doesn't yet exist in the game. This is the earliest point where messages can be sent to the peer via SMAPI.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerConnected">
            <summary>Raised after a peer connection is approved by the game.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IMultiplayerEvents.ModMessageReceived">
            <summary>Raised after a mod message is received over the network.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerDisconnected">
            <summary>Raised after the connection with a peer is severed.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.InventoryChangedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IPlayerEvents.InventoryChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.InventoryChangedEventArgs.Player">
            <summary>The player whose inventory changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.InventoryChangedEventArgs.Added">
            <summary>The added item stacks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.InventoryChangedEventArgs.Removed">
            <summary>The removed item stacks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.InventoryChangedEventArgs.QuantityChanged">
            <summary>The item stacks whose size changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.InventoryChangedEventArgs.IsLocalPlayer">
            <summary>Whether the affected player is the local one.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.InventoryChangedEventArgs.#ctor(StardewValley.Farmer,StardewValley.Item[],StardewValley.Item[],StardewModdingAPI.Events.ItemStackSizeChange[])">
            <summary>Construct an instance.</summary>
            <param name="player">The player whose inventory changed.</param>
            <param name="added">The added item stacks.</param>
            <param name="removed">The removed item stacks.</param>
            <param name="quantityChanged">The item stacks whose size changed.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.IPlayerEvents">
            <summary>Events raised when the player data changes.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IPlayerEvents.InventoryChanged">
            <summary>Raised after items are added or removed to a player's inventory. NOTE: this event is currently only raised for the current player.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IPlayerEvents.LevelChanged">
            <summary>Raised after a player skill level changes. This happens as soon as they level up, not when the game notifies the player after their character goes to bed.  NOTE: this event is currently only raised for the current player.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IPlayerEvents.Warped">
            <summary>Raised after a player warps to a new location. NOTE: this event is currently only raised for the current player.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.ISpecializedEvents">
            <summary>Events serving specialized edge cases that shouldn't be used by most mods.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.ISpecializedEvents.LoadStageChanged">
            <summary>Raised when the low-level stage in the game's loading process has changed. This is an advanced event for mods which need to run code at specific points in the loading process. The available stages or when they happen might change without warning in future versions (e.g. due to changes in the game's load process), so mods using this event are more likely to break or have bugs. Most mods should use <see cref="T:StardewModdingAPI.Events.IGameLoopEvents"/> instead.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicking">
            <summary>Raised before the game state is updated (≈60 times per second), regardless of normal SMAPI validation. This event is not thread-safe and may be invoked while game logic is running asynchronously. Changes to game state in this method may crash the game or corrupt an in-progress save. Do not use this event unless you're fully aware of the context in which your code will be run. Mods using this event will trigger a stability warning in the SMAPI console.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicked">
            <summary>Raised after the game state is updated (≈60 times per second), regardless of normal SMAPI validation. This event is not thread-safe and may be invoked while game logic is running asynchronously. Changes to game state in this method may crash the game or corrupt an in-progress save. Do not use this event unless you're fully aware of the context in which your code will be run. Mods using this event will trigger a stability warning in the SMAPI console.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.ItemStackSizeChange">
            <summary>An inventory item stack size change.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ItemStackSizeChange.Item">
            <summary>The item whose stack size changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ItemStackSizeChange.OldSize">
            <summary>The previous stack size.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ItemStackSizeChange.NewSize">
            <summary>The new stack size.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ItemStackSizeChange.#ctor(StardewValley.Item,System.Int32,System.Int32)">
            <summary>Construct an instance.</summary>
            <param name="item">The item whose stack size changed.</param>
            <param name="oldSize">The previous stack size.</param>
            <param name="newSize">The new stack size.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.IWorldEvents">
            <summary>Events raised when something changes in the world.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.LocationListChanged">
            <summary>Raised after a game location is added or removed.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.BuildingListChanged">
            <summary>Raised after buildings are added or removed in a location.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.DebrisListChanged">
            <summary>Raised after debris are added or removed in a location.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.LargeTerrainFeatureListChanged">
            <summary>Raised after large terrain features (like bushes) are added or removed in a location.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.NpcListChanged">
            <summary>Raised after NPCs are added or removed in a location.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.ObjectListChanged">
            <summary>Raised after objects are added or removed in a location.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.ChestInventoryChanged">
            <summary>Raised after items are added or removed from a chest.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.TerrainFeatureListChanged">
            <summary>Raised after terrain features (like floors and trees) are added or removed in a location.</summary>
        </member>
        <member name="E:StardewModdingAPI.Events.IWorldEvents.FurnitureListChanged">
            <summary>Raised after furniture are added or removed in a location.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.LargeTerrainFeatureListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.LargeTerrainFeatureListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LargeTerrainFeatureListChangedEventArgs.Location">
            <summary>The location which changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LargeTerrainFeatureListChangedEventArgs.Added">
            <summary>The large terrain features added to the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LargeTerrainFeatureListChangedEventArgs.Removed">
            <summary>The large terrain features removed from the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LargeTerrainFeatureListChangedEventArgs.IsCurrentLocation">
            <summary>Whether this is the location containing the local player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.LargeTerrainFeatureListChangedEventArgs.#ctor(StardewValley.GameLocation,System.Collections.Generic.IEnumerable{StardewValley.TerrainFeatures.LargeTerrainFeature},System.Collections.Generic.IEnumerable{StardewValley.TerrainFeatures.LargeTerrainFeature})">
            <summary>Construct an instance.</summary>
            <param name="location">The location which changed.</param>
            <param name="added">The large terrain features added to the location.</param>
            <param name="removed">The large terrain features removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.LevelChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IPlayerEvents.LevelChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LevelChangedEventArgs.Player">
            <summary>The player whose skill level changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LevelChangedEventArgs.Skill">
            <summary>The skill whose level changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LevelChangedEventArgs.OldLevel">
            <summary>The previous skill level.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LevelChangedEventArgs.NewLevel">
            <summary>The new skill level.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LevelChangedEventArgs.IsLocalPlayer">
            <summary>Whether the affected player is the local one.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.LevelChangedEventArgs.#ctor(StardewValley.Farmer,StardewModdingAPI.Enums.SkillType,System.Int32,System.Int32)">
            <summary>Construct an instance.</summary>
            <param name="player">The player whose skill level changed.</param>
            <param name="skill">The skill whose level changed.</param>
            <param name="oldLevel">The previous skill level.</param>
            <param name="newLevel">The new skill level.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.LoadStageChangedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.ISpecializedEvents.LoadStageChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LoadStageChangedEventArgs.OldStage">
            <summary>The previous load stage.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LoadStageChangedEventArgs.NewStage">
            <summary>The new load stage.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.LoadStageChangedEventArgs.#ctor(StardewModdingAPI.Enums.LoadStage,StardewModdingAPI.Enums.LoadStage)">
            <summary>Construct an instance.</summary>
            <param name="old">The previous load stage.</param>
            <param name="current">The new load stage.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.LocaleChangedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IContentEvents.LocaleChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LocaleChangedEventArgs.OldLanguage">
            <summary>The previous language enum value.</summary>
            <remarks>For a custom language, this is always <see cref="F:StardewValley.LocalizedContentManager.LanguageCode.mod"/>.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Events.LocaleChangedEventArgs.OldLocale">
            <summary>The previous locale code.</summary>
            <remarks>This is the locale code as it appears in asset names, like <c>fr-FR</c> in <c>Maps/springobjects.fr-FR</c>. The locale code for English is an empty string.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Events.LocaleChangedEventArgs.NewLanguage">
            <summary>The new language enum value.</summary>
            <remarks><inheritdoc cref="P:StardewModdingAPI.Events.LocaleChangedEventArgs.OldLanguage" select="remarks" /></remarks>
        </member>
        <member name="P:StardewModdingAPI.Events.LocaleChangedEventArgs.NewLocale">
            <summary>The new locale code.</summary>
            <remarks><inheritdoc cref="P:StardewModdingAPI.Events.LocaleChangedEventArgs.OldLocale" select="remarks" /></remarks>
        </member>
        <member name="M:StardewModdingAPI.Events.LocaleChangedEventArgs.#ctor(StardewValley.LocalizedContentManager.LanguageCode,System.String,StardewValley.LocalizedContentManager.LanguageCode,System.String)">
            <summary>Construct an instance.</summary>
            <param name="oldLanguage">The previous language enum value.</param>
            <param name="oldLocale">The previous locale code.</param>
            <param name="newLanguage">The new language enum value.</param>
            <param name="newLocale">The new locale code.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.LocationListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.LocationListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LocationListChangedEventArgs.Added">
            <summary>The added locations.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.LocationListChangedEventArgs.Removed">
            <summary>The removed locations.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.LocationListChangedEventArgs.#ctor(System.Collections.Generic.IEnumerable{StardewValley.GameLocation},System.Collections.Generic.IEnumerable{StardewValley.GameLocation})">
            <summary>Construct an instance.</summary>
            <param name="added">The added locations.</param>
            <param name="removed">The removed locations.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.MenuChangedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.MenuChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.MenuChangedEventArgs.OldMenu">
            <summary>The previous menu, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.MenuChangedEventArgs.NewMenu">
            <summary>The current menu, if any.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.MenuChangedEventArgs.#ctor(StardewValley.Menus.IClickableMenu,StardewValley.Menus.IClickableMenu)">
            <summary>Construct an instance.</summary>
            <param name="oldMenu">The previous menu, if any.</param>
            <param name="newMenu">The current menu, if any.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.ModMessageReceivedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IMultiplayerEvents.ModMessageReceived"/> event.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.ModMessageReceivedEventArgs.Message">
            <summary>The underlying message model.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.ModMessageReceivedEventArgs.JsonHelper">
            <summary>The JSON helper used to deserialize models.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ModMessageReceivedEventArgs.FromPlayerID">
            <summary>The unique ID of the player from whose computer the message was sent.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ModMessageReceivedEventArgs.FromModID">
            <summary>The unique ID of the mod which sent the message.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ModMessageReceivedEventArgs.Type">
            <summary>A message type which can be used to decide whether it's the one you want to handle, like <c>SetPlayerLocation</c>. This doesn't need to be globally unique, so mods should check the <see cref="P:StardewModdingAPI.Events.ModMessageReceivedEventArgs.FromModID"/>.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ModMessageReceivedEventArgs.#ctor(StardewModdingAPI.Framework.Networking.ModMessageModel,StardewModdingAPI.Toolkit.Serialization.JsonHelper)">
            <summary>Construct an instance.</summary>
            <param name="message">The received message.</param>
            <param name="jsonHelper">The JSON helper used to deserialize models.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.ModMessageReceivedEventArgs.ReadAs``1">
            <summary>Read the message data into the given model type.</summary>
            <typeparam name="TModel">The message model type.</typeparam>
        </member>
        <member name="T:StardewModdingAPI.Events.MouseWheelScrolledEventArgs">
            <summary>Event arguments when the player scrolls the mouse wheel.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.MouseWheelScrolledEventArgs.Position">
            <summary>The cursor position.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.MouseWheelScrolledEventArgs.OldValue">
            <summary>The old scroll value.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.MouseWheelScrolledEventArgs.NewValue">
            <summary>The new scroll value.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.MouseWheelScrolledEventArgs.Delta">
            <summary>The amount by which the scroll value changed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.MouseWheelScrolledEventArgs.#ctor(StardewModdingAPI.ICursorPosition,System.Int32,System.Int32)">
            <summary>Construct an instance.</summary>
            <param name="position">The cursor position.</param>
            <param name="oldValue">The old scroll value.</param>
            <param name="newValue">The new scroll value.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.NpcListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.NpcListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.NpcListChangedEventArgs.Location">
            <summary>The location which changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.NpcListChangedEventArgs.Added">
            <summary>The NPCs added to the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.NpcListChangedEventArgs.Removed">
            <summary>The NPCs removed from the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.NpcListChangedEventArgs.IsCurrentLocation">
            <summary>Whether this is the location containing the local player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.NpcListChangedEventArgs.#ctor(StardewValley.GameLocation,System.Collections.Generic.IEnumerable{StardewValley.NPC},System.Collections.Generic.IEnumerable{StardewValley.NPC})">
            <summary>Construct an instance.</summary>
            <param name="location">The location which changed.</param>
            <param name="added">The NPCs added to the location.</param>
            <param name="removed">The NPCs removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.ObjectListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.ObjectListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ObjectListChangedEventArgs.Location">
            <summary>The location which changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ObjectListChangedEventArgs.Added">
            <summary>The objects added to the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ObjectListChangedEventArgs.Removed">
            <summary>The objects removed from the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.ObjectListChangedEventArgs.IsCurrentLocation">
            <summary>Whether this is the location containing the local player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.ObjectListChangedEventArgs.#ctor(StardewValley.GameLocation,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{Microsoft.Xna.Framework.Vector2,StardewValley.Object}},System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{Microsoft.Xna.Framework.Vector2,StardewValley.Object}})">
            <summary>Construct an instance.</summary>
            <param name="location">The location which changed.</param>
            <param name="added">The objects added to the location.</param>
            <param name="removed">The objects removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.OneSecondUpdateTickedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.OneSecondUpdateTicked"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.OneSecondUpdateTickedEventArgs.Ticks">
            <summary>The number of ticks elapsed since the game started, including the current tick.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.OneSecondUpdateTickedEventArgs.IsMultipleOf(System.UInt32)">
            <summary>Get whether <see cref="P:StardewModdingAPI.Events.OneSecondUpdateTickedEventArgs.Ticks"/> is a multiple of the given <paramref name="number"/>. This is mainly useful if you want to run logic intermittently (e.g. <code>e.IsMultipleOf(30)</code> for every half-second).</summary>
            <param name="number">The factor to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.OneSecondUpdateTickingEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.OneSecondUpdateTicking"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.OneSecondUpdateTickingEventArgs.Ticks">
            <summary>The number of ticks elapsed since the game started, excluding the upcoming tick.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.OneSecondUpdateTickingEventArgs.IsMultipleOf(System.UInt32)">
            <summary>Get whether <see cref="P:StardewModdingAPI.Events.OneSecondUpdateTickingEventArgs.Ticks"/> is a multiple of the given <paramref name="number"/>. This is mainly useful if you want to run logic intermittently (e.g. <code>e.IsMultipleOf(30)</code> for every half-second).</summary>
            <param name="number">The factor to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.PeerConnectedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerConnected"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.PeerConnectedEventArgs.Peer">
            <summary>The peer whose metadata was received.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.PeerConnectedEventArgs.#ctor(StardewModdingAPI.IMultiplayerPeer)">
            <summary>Construct an instance.</summary>
            <param name="peer">The peer whose metadata was received.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.PeerContextReceivedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerContextReceived"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.PeerContextReceivedEventArgs.Peer">
            <summary>The peer whose metadata was received.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.PeerContextReceivedEventArgs.#ctor(StardewModdingAPI.IMultiplayerPeer)">
            <summary>Construct an instance.</summary>
            <param name="peer">The peer whose metadata was received.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.PeerDisconnectedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerDisconnected"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.PeerDisconnectedEventArgs.Peer">
            <summary>The peer who disconnected.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.PeerDisconnectedEventArgs.#ctor(StardewModdingAPI.IMultiplayerPeer)">
            <summary>Construct an instance.</summary>
            <param name="peer">The peer who disconnected.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderedActiveMenuEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedActiveMenu"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderedActiveMenuEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.Rendered"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderedEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderedHudEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedHud"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderedHudEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderedStepEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedStep"/> event.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.RenderedStepEventArgs.Instances">
            <summary>The cached instance for each render step.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderedStepEventArgs.Step">
            <summary>The current step in the render cycle.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderedStepEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.RenderedStepEventArgs.#ctor(StardewValley.Mods.RenderSteps)">
            <summary>Construct an instance.</summary>
            <param name="step">The current step in the render cycle.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.RenderedStepEventArgs.Instance(StardewValley.Mods.RenderSteps)">
            <summary>Get an instance for a render step.</summary>
            <param name="step">The current step in the render cycle.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderedWorldEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedWorld"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderedWorldEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderingActiveMenuEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingActiveMenu"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderingActiveMenuEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderingEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.Rendering"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderingEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderingHudEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingHud"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderingHudEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderingStepEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingStep"/> event.</summary>
        </member>
        <member name="F:StardewModdingAPI.Events.RenderingStepEventArgs.Instances">
            <summary>The cached instance for each render step.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderingStepEventArgs.Step">
            <summary>The current step in the render cycle.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderingStepEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.RenderingStepEventArgs.#ctor(StardewValley.Mods.RenderSteps)">
            <summary>Construct an instance.</summary>
            <param name="step">The current step in the render cycle.</param>
        </member>
        <member name="M:StardewModdingAPI.Events.RenderingStepEventArgs.Instance(StardewValley.Mods.RenderSteps)">
            <summary>Get an instance for a render step.</summary>
            <param name="step">The current step in the render cycle.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.RenderingWorldEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingWorld"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.RenderingWorldEventArgs.SpriteBatch">
            <summary>The sprite batch being drawn. Add anything you want to appear on-screen to this sprite batch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.ReturnedToTitleEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.ReturnedToTitle"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.SaveCreatedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.SaveCreated"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.SaveCreatingEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.SaveCreating"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.SavedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.Saved"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.SaveLoadedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.SaveLoaded"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.SavingEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.Saving"/> event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Events.TerrainFeatureListChangedEventArgs">
            <summary>Event arguments for a <see cref="E:StardewModdingAPI.Events.IWorldEvents.TerrainFeatureListChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.TerrainFeatureListChangedEventArgs.Location">
            <summary>The location which changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.TerrainFeatureListChangedEventArgs.Added">
            <summary>The terrain features added to the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.TerrainFeatureListChangedEventArgs.Removed">
            <summary>The terrain features removed from the location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.TerrainFeatureListChangedEventArgs.IsCurrentLocation">
            <summary>Whether this is the location containing the local player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.TerrainFeatureListChangedEventArgs.#ctor(StardewValley.GameLocation,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{Microsoft.Xna.Framework.Vector2,StardewValley.TerrainFeatures.TerrainFeature}},System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{Microsoft.Xna.Framework.Vector2,StardewValley.TerrainFeatures.TerrainFeature}})">
            <summary>Construct an instance.</summary>
            <param name="location">The location which changed.</param>
            <param name="added">The terrain features added to the location.</param>
            <param name="removed">The terrain features removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.TimeChangedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.TimeChanged"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.TimeChangedEventArgs.OldTime">
            <summary>The previous time of day in 24-hour notation (like 1600 for 4pm). The clock time resets when the player sleeps, so 2am (before sleeping) is 2600.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.TimeChangedEventArgs.NewTime">
            <summary>The current time of day in 24-hour notation (like 1600 for 4pm). The clock time resets when the player sleeps, so 2am (before sleeping) is 2600.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.TimeChangedEventArgs.#ctor(System.Int32,System.Int32)">
            <summary>Construct an instance.</summary>
            <param name="oldTime">The previous time of day in 24-hour notation (like 1600 for 4pm).</param>
            <param name="newTime">The current time of day in 24-hour notation (like 1600 for 4pm).</param>
        </member>
        <member name="T:StardewModdingAPI.Events.UnvalidatedUpdateTickedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicked"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UnvalidatedUpdateTickedEventArgs.Ticks">
            <summary>The number of ticks elapsed since the game started, including the current tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UnvalidatedUpdateTickedEventArgs.IsOneSecond">
            <summary>Whether <see cref="P:StardewModdingAPI.Events.UnvalidatedUpdateTickedEventArgs.Ticks"/> is a multiple of 60, which happens approximately once per second.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.UnvalidatedUpdateTickedEventArgs.IsMultipleOf(System.UInt32)">
            <summary>Get whether <see cref="P:StardewModdingAPI.Events.UnvalidatedUpdateTickedEventArgs.Ticks"/> is a multiple of the given <paramref name="number"/>. This is mainly useful if you want to run logic intermittently (e.g. <code>e.IsMultipleOf(30)</code> for every half-second).</summary>
            <param name="number">The factor to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.UnvalidatedUpdateTickingEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicking"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UnvalidatedUpdateTickingEventArgs.Ticks">
            <summary>The number of ticks elapsed since the game started, excluding the upcoming tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UnvalidatedUpdateTickingEventArgs.IsOneSecond">
            <summary>Whether <see cref="P:StardewModdingAPI.Events.UnvalidatedUpdateTickingEventArgs.Ticks"/> is a multiple of 60, which happens approximately once per second.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.UnvalidatedUpdateTickingEventArgs.IsMultipleOf(System.UInt32)">
            <summary>Get whether <see cref="P:StardewModdingAPI.Events.UnvalidatedUpdateTickingEventArgs.Ticks"/> is a multiple of the given <paramref name="number"/>. This is mainly useful if you want to run logic intermittently (e.g. <code>e.IsMultipleOf(30)</code> for every half-second).</summary>
            <param name="number">The factor to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.UpdateTickedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.UpdateTicked"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UpdateTickedEventArgs.Ticks">
            <summary>The number of ticks elapsed since the game started, including the current tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UpdateTickedEventArgs.IsOneSecond">
            <summary>Whether <see cref="P:StardewModdingAPI.Events.UpdateTickedEventArgs.Ticks"/> is a multiple of 60, which happens approximately once per second.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.UpdateTickedEventArgs.IsMultipleOf(System.UInt32)">
            <summary>Get whether <see cref="P:StardewModdingAPI.Events.UpdateTickedEventArgs.Ticks"/> is a multiple of the given <paramref name="number"/>. This is mainly useful if you want to run logic intermittently (e.g. <code>e.IsMultipleOf(30)</code> for every half-second).</summary>
            <param name="number">The factor to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.UpdateTickingEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.UpdateTicking"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UpdateTickingEventArgs.Ticks">
            <summary>The number of ticks elapsed since the game started, excluding the upcoming tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.UpdateTickingEventArgs.IsOneSecond">
            <summary>Whether <see cref="P:StardewModdingAPI.Events.UpdateTickingEventArgs.Ticks"/> is a multiple of 60, which happens approximately once per second.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.UpdateTickingEventArgs.IsMultipleOf(System.UInt32)">
            <summary>Get whether <see cref="P:StardewModdingAPI.Events.UpdateTickingEventArgs.Ticks"/> is a multiple of the given <paramref name="number"/>. This is mainly useful if you want to run logic intermittently (e.g. <code>e.IsMultipleOf(30)</code> for every half-second).</summary>
            <param name="number">The factor to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.WarpedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IPlayerEvents.Warped"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.WarpedEventArgs.Player">
            <summary>The player who warped to a new location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.WarpedEventArgs.OldLocation">
            <summary>The player's previous location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.WarpedEventArgs.NewLocation">
            <summary>The player's current location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.WarpedEventArgs.IsLocalPlayer">
            <summary>Whether the affected player is the local one.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.WarpedEventArgs.#ctor(StardewValley.Farmer,StardewValley.GameLocation,StardewValley.GameLocation)">
            <summary>Construct an instance.</summary>
            <param name="player">The player who warped to a new location.</param>
            <param name="oldLocation">The player's previous location.</param>
            <param name="newLocation">The player's current location.</param>
        </member>
        <member name="T:StardewModdingAPI.Events.WindowResizedEventArgs">
            <summary>Event arguments for an <see cref="E:StardewModdingAPI.Events.IDisplayEvents.WindowResized"/> event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.WindowResizedEventArgs.OldSize">
            <summary>The previous window size.</summary>
        </member>
        <member name="P:StardewModdingAPI.Events.WindowResizedEventArgs.NewSize">
            <summary>The current window size.</summary>
        </member>
        <member name="M:StardewModdingAPI.Events.WindowResizedEventArgs.#ctor(Microsoft.Xna.Framework.Point,Microsoft.Xna.Framework.Point)">
            <summary>Construct an instance.</summary>
            <param name="oldSize">The previous window size.</param>
            <param name="newSize">The current window size.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Command">
            <summary>A command that can be submitted through the SMAPI console to interact with SMAPI.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Command.Mod">
            <summary>The mod that registered the command (or <c>null</c> if registered by SMAPI).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Command.Name">
            <summary>The command name, which the user must type to trigger it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Command.Documentation">
            <summary>The human-readable documentation shown when the player runs the built-in 'help' command.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Command.Callback">
            <summary>The method to invoke when the command is triggered. This method is passed the command name and arguments submitted by the user.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Command.#ctor(StardewModdingAPI.Framework.IModMetadata,System.String,System.String,System.Action{System.String,System.String[]})">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod that registered the command (or <c>null</c> if registered by SMAPI).</param>
            <param name="name">The command name, which the user must type to trigger it.</param>
            <param name="documentation">The human-readable documentation shown when the player runs the built-in 'help' command.</param>
            <param name="callback">The method to invoke when the command is triggered. This method is passed the command name and arguments submitted by the user.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.CommandManager">
            <summary>Manages console commands.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.CommandManager.Commands">
            <summary>The commands registered with SMAPI.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.CommandManager.Monitor">
            <summary>Writes messages to the console.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.#ctor(StardewModdingAPI.IMonitor)">
            <summary>Construct an instance.</summary>
            <param name="monitor">Writes messages to the console.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.Add(StardewModdingAPI.Framework.IModMetadata,System.String,System.String,System.Action{System.String,System.String[]})">
            <summary>Add a console command.</summary>
            <param name="mod">The mod adding the command (or <c>null</c> for a SMAPI command).</param>
            <param name="name">The command name, which the user must type to trigger it.</param>
            <param name="documentation">The human-readable documentation shown when the player runs the built-in 'help' command.</param>
            <param name="callback">The method to invoke when the command is triggered. This method is passed the command name and arguments submitted by the user.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="name"/> or <paramref name="callback"/> is null or empty.</exception>
            <exception cref="T:System.FormatException">The <paramref name="name"/> is not a valid format.</exception>
            <exception cref="T:System.ArgumentException">There's already a command with that name.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.Add(StardewModdingAPI.Framework.Commands.IInternalCommand,StardewModdingAPI.IMonitor)">
            <summary>Add a console command.</summary>
            <param name="command">the SMAPI console command to add.</param>
            <param name="monitor">Writes messages to the console.</param>
            <exception cref="T:System.ArgumentException">There's already a command with that name.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.Get(System.String)">
            <summary>Get a command by its unique name.</summary>
            <param name="name">The command name.</param>
            <returns>Returns the matching command, or <c>null</c> if not found.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.GetAll">
            <summary>Get all registered commands.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.TryParse(System.String,System.String@,System.String[]@,StardewModdingAPI.Framework.Command@,System.Int32@)">
            <summary>Try to parse a raw line of user input into an executable command.</summary>
            <param name="input">The raw user input.</param>
            <param name="name">The parsed command name.</param>
            <param name="args">The parsed command arguments.</param>
            <param name="command">The command which can handle the input.</param>
            <param name="screenId">The screen ID on which to run the command.</param>
            <returns>Returns true if the input was successfully parsed and matched to a command; else false.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.TryParseScreenId(System.String,System.Int32@,System.String@)">
            <summary>Try to parse a 'screen=X' command argument, which specifies the screen that should receive the command.</summary>
            <param name="arg">The raw argument to parse.</param>
            <param name="screen">The parsed screen ID, if any.</param>
            <param name="error">The error which indicates an invalid screen ID, if applicable.</param>
            <returns>Returns whether the screen ID was parsed successfully.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandManager.GetNormalizedName(System.String)">
            <summary>Get a normalized command name.</summary>
            <param name="name">The command name.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.CommandQueue">
            <summary>A thread-safe command queue optimized for infrequent changes.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.CommandQueue.RawCommandQueue">
            <summary>The underlying list of queued commands to parse and execute.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandQueue.Add(System.String)">
            <summary>Add a command to the queue.</summary>
            <param name="command">The command to add.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.CommandQueue.TryDequeue(System.String[]@)">
            <summary>Remove and return all queued commands, if any.</summary>
            <param name="queued">The commands that were dequeued, in the order they were originally queued.</param>
            <returns>Returns whether any values were dequeued.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand">
            <summary>The 'harmony_summary' SMAPI console command.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.Name">
            <summary>The command name, which the user must type to trigger it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.Description">
            <summary>The human-readable documentation shown when the player runs the built-in 'help' command.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.HandleCommand(System.String[],StardewModdingAPI.IMonitor)">
            <summary>Handle the console command when it's entered by the user.</summary>
            <param name="args">The command arguments.</param>
            <param name="monitor">Writes messages to the console.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.FilterPatches(System.String[])">
            <summary>Get all current Harmony patches matching any of the given search terms.</summary>
            <param name="searchTerms">The search terms to match.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.GetAllPatches">
            <summary>Get all current Harmony patches.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.PatchType">
            <summary>A Harmony patch type.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.PatchType.Prefix">
            <summary>A prefix patch.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.PatchType.Postfix">
            <summary>A postfix patch.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.PatchType.Finalizer">
            <summary>A finalizer patch.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.PatchType.Transpiler">
            <summary>A transpiler patch.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.SearchResult">
            <summary>A patch search result for a method.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.SearchResult.MethodName">
            <summary>A simple human-readable name for the patched method.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.SearchResult.MethodDescription">
            <summary>A detailed description for the patched method.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.SearchResult.PatchTypesByOwner">
            <summary>The patch types by the Harmony instance ID that added them.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.SearchResult.#ctor(System.Reflection.MethodBase,System.Collections.Generic.IDictionary{System.String,System.Collections.Generic.ISet{StardewModdingAPI.Framework.Commands.HarmonySummaryCommand.PatchType}})">
            <summary>Construct an instance.</summary>
            <param name="method">The patched method.</param>
            <param name="patchTypesByOwner">The patch types by the Harmony instance ID that added them.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Commands.HelpCommand">
            <summary>The 'help' SMAPI console command.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Commands.HelpCommand.CommandManager">
            <summary>Manages console commands.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.HelpCommand.Name">
            <summary>The command name, which the user must type to trigger it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.HelpCommand.Description">
            <summary>The human-readable documentation shown when the player runs the built-in 'help' command.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.HelpCommand.#ctor(StardewModdingAPI.Framework.CommandManager)">
            <summary>Construct an instance.</summary>
            <param name="commandManager">Manages console commands.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.HelpCommand.HandleCommand(System.String[],StardewModdingAPI.IMonitor)">
            <summary>Handle the console command when it's entered by the user.</summary>
            <param name="args">The command arguments.</param>
            <param name="monitor">Writes messages to the console.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Commands.IInternalCommand">
            <summary>A core SMAPI console command.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.IInternalCommand.Name">
            <summary>The command name, which the user must type to trigger it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.IInternalCommand.Description">
            <summary>The human-readable documentation shown when the player runs the built-in 'help' command.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.IInternalCommand.HandleCommand(System.String[],StardewModdingAPI.IMonitor)">
            <summary>Handle the console command when it's entered by the user.</summary>
            <param name="args">The command arguments.</param>
            <param name="monitor">Writes messages to the console.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Commands.ReloadI18nCommand">
            <summary>The 'reload_i18n' SMAPI console command.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Commands.ReloadI18nCommand.ReloadTranslations">
            <summary>Reload translations for all mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.ReloadI18nCommand.Name">
            <summary>The command name, which the user must type to trigger it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Commands.ReloadI18nCommand.Description">
            <summary>The human-readable documentation shown when the player runs the built-in 'help' command.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.ReloadI18nCommand.#ctor(System.Action)">
            <summary>Construct an instance.</summary>
            <param name="reloadTranslations">Reload translations for all mods..</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Commands.ReloadI18nCommand.HandleCommand(System.String[],StardewModdingAPI.IMonitor)">
            <summary>Handle the console command when it's entered by the user.</summary>
            <param name="args">The command arguments.</param>
            <param name="monitor">Writes messages to the console.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ContentCoordinator">
            <summary>The central logic for creating content managers, invalidating caches, and propagating asset changes.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.ManagedPrefix">
            <summary>An asset key prefix for assets from SMAPI mod folders.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.GetFileLookup">
            <summary>Get a file lookup for the given directory.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.Monitor">
            <summary>Encapsulates monitoring and logging.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.CoreAssets">
            <summary>Provides metadata for core game assets.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.Reflection">
            <summary>Simplifies access to private code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.JsonHelper">
            <summary>Encapsulates SMAPI's JSON file parsing.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.OnLoadingFirstAsset">
            <summary>A callback to invoke the first time *any* game content manager loads an asset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.OnAssetLoaded">
            <summary>A callback to invoke when an asset is fully loaded.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.OnAssetsInvalidated">
            <summary>A callback to invoke when any asset names have been invalidated from the cache.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.RequestAssetOperations">
            <summary>Get the load/edit operations to apply to an asset by querying registered <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetRequested"/> event handlers.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.ContentManagers">
            <summary>The loaded content managers (including the <see cref="P:StardewModdingAPI.Framework.ContentCoordinator.MainContentManager"/>).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.IsDisposed">
            <summary>Whether the content coordinator has been disposed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.ContentManagerLock">
            <summary>A lock used to prevent asynchronous changes to the content manager list.</summary>
            <remarks>The game may add content managers in asynchronous threads (e.g. when populating the load screen).</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.VanillaTilesheets">
            <summary>A cache of ordered tilesheet IDs used by vanilla maps.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.VanillaContentManager">
            <summary>An unmodified content manager which doesn't intercept assets, used to compare asset data.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.LocaleCodes">
            <summary>The language enum values indexed by locale code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentCoordinator.AssetOperationsByKey">
            <summary>The cached asset load/edit operations to apply, indexed by asset name.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentCoordinator.MainContentManager">
            <summary>The primary content manager used for most assets.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentCoordinator.Language">
            <summary>The current language as a constant.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentCoordinator.FullRootDirectory">
            <summary>The absolute path to the <see cref="P:Microsoft.Xna.Framework.Content.ContentManager.RootDirectory"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentCoordinator.LocalizedAssetNames">
            <summary>A lookup which tracks whether each given asset name has a localized form.</summary>
            <remarks>This is a per-screen equivalent to the base game's <see cref="F:StardewValley.LocalizedContentManager.localizedAssetNames"/> field, since mods may provide different assets per-screen.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.#ctor(System.IServiceProvider,System.String,System.Globalization.CultureInfo,StardewModdingAPI.IMonitor,StardewValley.Multiplayer,StardewModdingAPI.Framework.Reflection.Reflector,StardewModdingAPI.Toolkit.Serialization.JsonHelper,System.Action,System.Action{StardewModdingAPI.Framework.ContentManagers.BaseContentManager,StardewModdingAPI.IAssetName},System.Func{System.String,StardewModdingAPI.Toolkit.Utilities.PathLookups.IFileLookup},System.Action{System.Collections.Generic.IList{StardewModdingAPI.IAssetName}},System.Func{StardewModdingAPI.IAssetInfo,StardewModdingAPI.Framework.Content.AssetOperationGroup})">
            <summary>Construct an instance.</summary>
            <param name="serviceProvider">The service provider to use to locate services.</param>
            <param name="rootDirectory">The root directory to search for content.</param>
            <param name="currentCulture">The current culture for which to localize content.</param>
            <param name="monitor">Encapsulates monitoring and logging.</param>
            <param name="multiplayer">The multiplayer instance whose map cache to update during asset propagation.</param>
            <param name="reflection">Simplifies access to private code.</param>
            <param name="jsonHelper">Encapsulates SMAPI's JSON file parsing.</param>
            <param name="onLoadingFirstAsset">A callback to invoke the first time *any* game content manager loads an asset.</param>
            <param name="onAssetLoaded">A callback to invoke when an asset is fully loaded.</param>
            <param name="getFileLookup">Get a file lookup for the given directory.</param>
            <param name="onAssetsInvalidated">A callback to invoke when any asset names have been invalidated from the cache.</param>
            <param name="requestAssetOperations">Get the load/edit operations to apply to an asset by querying registered <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetRequested"/> event handlers.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.CreateGameContentManager(System.String)">
            <summary>Get a new content manager which handles reading files from the game content folder with support for interception.</summary>
            <param name="name">A name for the mod manager. Not guaranteed to be unique.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.CreateModContentManager(System.String,System.String,System.String,StardewModdingAPI.Framework.ContentManagers.IContentManager)">
            <summary>Get a new content manager which handles reading files from a SMAPI mod folder with support for unpacked files.</summary>
            <param name="name">A name for the mod manager. Not guaranteed to be unique.</param>
            <param name="modName">The mod display name to show in errors.</param>
            <param name="rootDirectory">The root directory to search for content (or <c>null</c> for the default).</param>
            <param name="gameContentManager">The game content manager used for map tilesheets not provided by the mod.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.GetLocale">
            <summary>Get the current content locale.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.OnAdditionalLanguagesInitialized">
            <summary>Perform any updates needed when the game loads custom languages from <c>Data/AdditionalLanguages</c>.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.OnLocaleChanged">
            <summary>Perform any updates needed when the locale changes.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.OnReturningToTitleScreen">
            <summary>Clean up when the player is returning to the title screen.</summary>
            <remarks>This is called after the player returns to the title screen, but before <see cref="M:StardewValley.Game1.CleanupReturningToTitle"/> runs.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.ParseAssetName(System.String,System.Boolean)">
            <summary>Parse a raw asset name.</summary>
            <param name="rawName">The raw asset name to parse.</param>
            <param name="allowLocales">Whether to parse locales in the <paramref name="rawName"/>. If this is false, any locale codes in the name are treated as if they were part of the base name (e.g. for mod files).</param>
            <exception cref="T:System.ArgumentException">The <paramref name="rawName"/> is null or empty.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.IsManagedAssetKey(StardewModdingAPI.IAssetName)">
            <summary>Get whether this asset is mapped to a mod folder.</summary>
            <param name="key">The asset name.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.TryParseManagedAssetKey(System.String,System.String@,StardewModdingAPI.IAssetName@)">
            <summary>Parse a managed SMAPI asset key which maps to a mod folder.</summary>
            <param name="key">The asset key.</param>
            <param name="contentManagerID">The unique name for the content manager which should load this asset.</param>
            <param name="relativePath">The asset name within the mod folder.</param>
            <returns>Returns whether the asset was parsed successfully.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.GetManagedAssetPrefix(System.String)">
            <summary>Get the managed asset key prefix for a mod.</summary>
            <param name="modID">The mod's unique ID.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.DoesManagedAssetExist``1(System.String,StardewModdingAPI.IAssetName)">
            <summary>Get whether an asset from a mod folder exists.</summary>
            <typeparam name="T">The expected asset type.</typeparam>
            <param name="contentManagerID">The unique name for the content manager which should load this asset.</param>
            <param name="assetName">The asset name within the mod folder.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.LoadManagedAsset``1(System.String,StardewModdingAPI.IAssetName)">
            <summary>Get a copy of an asset from a mod folder.</summary>
            <typeparam name="T">The asset type.</typeparam>
            <param name="contentManagerID">The unique name for the content manager which should load this asset.</param>
            <param name="relativePath">The asset name within the mod folder.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.InvalidateCache(System.Func{StardewModdingAPI.IAssetInfo,System.Boolean},System.Boolean)">
            <summary>Purge matched assets from the cache.</summary>
            <param name="predicate">Matches the asset keys to invalidate.</param>
            <param name="dispose">Whether to dispose invalidated assets. This should only be <c>true</c> when they're being invalidated as part of a dispose, to avoid crashing the game.</param>
            <returns>Returns the invalidated asset keys.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.InvalidateCache(System.Func{StardewModdingAPI.Framework.ContentManagers.IContentManager,System.String,System.Type,System.Boolean},System.Boolean)">
            <summary>Purge matched assets from the cache.</summary>
            <param name="predicate">Matches the asset keys to invalidate.</param>
            <param name="dispose">Whether to dispose invalidated assets. This should only be <c>true</c> when they're being invalidated as part of a dispose, to avoid crashing the game.</param>
            <returns>Returns the invalidated asset names.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.GetAssetOperations(StardewModdingAPI.IAssetInfo)">
            <summary>Get the asset load and edit operations to apply to a given asset if it's (re)loaded now.</summary>
            <param name="info">The asset info to load or edit.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.GetLoadedValues(StardewModdingAPI.IAssetName)">
            <summary>Get all loaded instances of an asset name.</summary>
            <param name="assetName">The asset name.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.GetVanillaTilesheetIds(System.String)">
            <summary>Get the tilesheet ID order used by the unmodified version of a map asset.</summary>
            <param name="assetName">The asset path relative to the loader root directory, not including the <c>.xnb</c> extension.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.GetLocaleCode(StardewValley.LocalizedContentManager.LanguageCode)">
            <summary>Get the locale code which corresponds to a language enum (e.g. <c>fr-FR</c> given <see cref="F:StardewValley.LocalizedContentManager.LanguageCode.fr"/>).</summary>
            <param name="language">The language enum to search.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.Dispose">
            <summary>Dispose held resources.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.OnDisposing(StardewModdingAPI.Framework.ContentManagers.IContentManager)">
            <summary>A callback invoked when a content manager is disposed.</summary>
            <param name="contentManager">The content manager being disposed.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.TryLoadVanillaAsset``1(System.String,``0@)">
            <summary>Get a vanilla asset without interception.</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset path relative to the loader root directory, not including the <c>.xnb</c> extension.</param>
            <param name="asset">The loaded asset data.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentCoordinator.GetLocaleCodes(System.Collections.Generic.IEnumerable{StardewValley.GameData.ModLanguage})">
            <summary>Get the language enums (like <see cref="F:StardewValley.LocalizedContentManager.LanguageCode.ja"/>) indexed by locale code (like <c>ja-JP</c>).</summary>
            <param name="customLanguages">The custom languages to add to the lookup.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ContentManagers.BaseContentManager">
            <summary>A content manager which handles reading files from a SMAPI mod folder with support for unpacked files.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Coordinator">
            <summary>The central coordinator which manages content managers.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Cache">
            <summary>The underlying asset cache.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Monitor">
            <summary>Encapsulates monitoring and logging.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Reflection">
            <summary>Simplifies access to private code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.TryLocalizeKeys">
            <summary>Whether to automatically try resolving keys to a localized form if available.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.IsDisposed">
            <summary>Whether the content coordinator has been disposed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.OnDisposing">
            <summary>A callback to invoke when the content manager is being disposed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Disposables">
            <summary>A list of disposable assets.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.BaseDisposableReferences">
            <summary>The disposable assets tracked by the base content manager.</summary>
            <remarks>This should be kept empty to avoid keeping disposable assets referenced forever, which prevents garbage collection when they're unused. Disposable assets are tracked by <see cref="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Disposables"/> instead, which avoids a hard reference.</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.BaseLoadProxyCache">
            <summary>A cache of proxy wrappers for the <see cref="M:Microsoft.Xna.Framework.Content.ContentManager.Load``1(System.String)"/> method.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.CheckGameFolderForAssetExists">
            <summary>Whether to check the game folder in the base <see cref="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.DoesAssetExist``1(StardewModdingAPI.IAssetName)"/> implementation.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Language">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.FullRootDirectory">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.IsNamespaced">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.#ctor(System.String,System.IServiceProvider,System.String,System.Globalization.CultureInfo,StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.Reflection.Reflector,System.Action{StardewModdingAPI.Framework.ContentManagers.BaseContentManager},System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="name">A name for the mod manager. Not guaranteed to be unique.</param>
            <param name="serviceProvider">The service provider to use to locate services.</param>
            <param name="rootDirectory">The root directory to search for content.</param>
            <param name="currentCulture">The current culture for which to localize content.</param>
            <param name="coordinator">The central coordinator which manages content managers.</param>
            <param name="monitor">Encapsulates monitoring and logging.</param>
            <param name="reflection">Simplifies access to private code.</param>
            <param name="onDisposing">A callback to invoke when the content manager is being disposed.</param>
            <param name="isNamespaced">Whether this content manager handles managed asset keys (e.g. to load assets from a mod folder).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.DoesAssetExist``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.DoesAssetExist``1(StardewModdingAPI.IAssetName)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Load``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Load``1(System.String,StardewValley.LocalizedContentManager.LanguageCode)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.LoadImpl``1(System.String,System.String,StardewValley.LocalizedContentManager.LanguageCode)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.LoadLocalized``1(StardewModdingAPI.IAssetName,StardewValley.LocalizedContentManager.LanguageCode,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.LoadExact``1(StardewModdingAPI.IAssetName,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.AssertAndNormalizeAssetName(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.GetLocale">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.GetLocale(StardewValley.LocalizedContentManager.LanguageCode)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.IsLoaded(StardewModdingAPI.IAssetName)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.GetCachedAssets">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.InvalidateCache(StardewModdingAPI.IAssetName,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Dispose(System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.Unload">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.PrenormalizeRawAssetName(System.String)">
            <summary>Apply initial normalization to a raw asset name before it's parsed.</summary>
            <param name="assetName">The asset name to normalize.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.NormalizePathSeparators(System.String)">
            <summary>Normalize path separators in a file path. For asset keys, see <see cref="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.AssertAndNormalizeAssetName(System.String)"/> instead.</summary>
            <param name="path">The file path to normalize.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.RawLoad``1(StardewModdingAPI.IAssetName,System.Boolean)">
            <summary>Load an asset file directly from the underlying content manager.</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The normalized asset key.</param>
            <param name="useCache">Whether to read/write the loaded asset to the asset cache.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.BaseContentManager.TrackAsset``1(StardewModdingAPI.IAssetName,``0,System.Boolean)">
            <summary>Add tracking data to an asset and add it to the cache.</summary>
            <typeparam name="T">The type of asset to inject.</typeparam>
            <param name="assetName">The asset path relative to the loader root directory, not including the <c>.xnb</c> extension.</param>
            <param name="value">The asset value.</param>
            <param name="useCache">Whether to save the asset to the asset cache.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ContentManagers.GameContentManager">
            <summary>A content manager which handles reading files from the game content folder with support for interception.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.GameContentManager.AssetsBeingLoaded">
            <summary>The assets currently being intercepted by <see cref="T:StardewModdingAPI.Framework.Content.AssetLoadOperation"/> instances. This is used to prevent infinite loops when a loader loads a new asset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.GameContentManager.IsFirstLoad">
            <summary>Whether the next load is the first for any game content manager.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.GameContentManager.OnLoadingFirstAsset">
            <summary>A callback to invoke the first time *any* game content manager loads an asset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.GameContentManager.OnAssetLoaded">
            <summary>A callback to invoke when an asset is fully loaded.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.#ctor(System.String,System.IServiceProvider,System.String,System.Globalization.CultureInfo,StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.Reflection.Reflector,System.Action{StardewModdingAPI.Framework.ContentManagers.BaseContentManager},System.Action,System.Action{StardewModdingAPI.Framework.ContentManagers.BaseContentManager,StardewModdingAPI.IAssetName})">
            <summary>Construct an instance.</summary>
            <param name="name">A name for the mod manager. Not guaranteed to be unique.</param>
            <param name="serviceProvider">The service provider to use to locate services.</param>
            <param name="rootDirectory">The root directory to search for content.</param>
            <param name="currentCulture">The current culture for which to localize content.</param>
            <param name="coordinator">The central coordinator which manages content managers.</param>
            <param name="monitor">Encapsulates monitoring and logging.</param>
            <param name="reflection">Simplifies access to private code.</param>
            <param name="onDisposing">A callback to invoke when the content manager is being disposed.</param>
            <param name="onLoadingFirstAsset">A callback to invoke the first time *any* game content manager loads an asset.</param>
            <param name="onAssetLoaded">A callback to invoke when an asset is fully loaded.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.DoesAssetExist``1(StardewModdingAPI.IAssetName)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.LoadExact``1(StardewModdingAPI.IAssetName,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.CreateTemporary">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.ApplyLoader``1(StardewModdingAPI.IAssetInfo,System.Collections.Generic.List{StardewModdingAPI.Framework.Content.AssetLoadOperation})">
            <summary>Load the initial asset from the registered loaders.</summary>
            <param name="info">The basic asset metadata.</param>
            <param name="loadOperations">The load operations to apply to the asset.</param>
            <returns>Returns the loaded asset metadata, or <c>null</c> if no loader matched.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.ApplyEditors``1(StardewModdingAPI.IAssetInfo,StardewModdingAPI.IAssetData,System.Collections.Generic.List{StardewModdingAPI.Framework.Content.AssetEditOperation})">
            <summary>Apply any editors to a loaded asset.</summary>
            <typeparam name="T">The asset type.</typeparam>
            <param name="info">The basic asset metadata.</param>
            <param name="asset">The loaded asset.</param>
            <param name="editOperations">The edit operations to apply to the asset.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.AssertMaxOneRequiredLoader(StardewModdingAPI.IAssetInfo,System.Collections.Generic.List{StardewModdingAPI.Framework.Content.AssetLoadOperation},System.String@)">
            <summary>Assert that at most one loader will be applied to an asset.</summary>
            <param name="info">The basic asset metadata.</param>
            <param name="loaders">The asset loaders to apply.</param>
            <param name="error">The error message to show to the user, if the method returns false.</param>
            <returns>Returns true if only one loader will apply, else false.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.GetOnBehalfOfLabel(StardewModdingAPI.Framework.IModMetadata,System.Boolean)">
            <summary>Get a parenthetical label for log messages for the content pack on whose behalf the action is being performed, if any.</summary>
            <param name="onBehalfOf">The content pack on whose behalf the action is being performed.</param>
            <param name="parenthetical">whether to format the label as a parenthetical shown after the mod name like <c> (for the 'X' content pack)</c>, instead of a standalone label like <c>the 'X' content pack</c>.</param>
            <returns>Returns the on-behalf-of label if applicable, else <c>null</c>.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManager.TryFixAndValidateLoadedAsset``1(StardewModdingAPI.IAssetInfo,``0,StardewModdingAPI.Framework.Content.AssetLoadOperation)">
            <summary>Validate that an asset loaded by a mod is valid and won't cause issues, and fix issues if possible.</summary>
            <typeparam name="T">The asset type.</typeparam>
            <param name="info">The basic asset metadata.</param>
            <param name="data">The loaded asset data.</param>
            <param name="loader">The loader which loaded the asset.</param>
            <returns>Returns whether the asset passed validation checks (after any fixes were applied).</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.ContentManagers.GameContentManagerForAssetPropagation">
            <summary>An extension of <see cref="T:StardewModdingAPI.Framework.ContentManagers.GameContentManager"/> specifically optimized for asset propagation.</summary>
            <remarks>This avoids sharing an asset cache with <see cref="F:StardewValley.Game1.content"/> or mods, so that assets can be safely disposed when the vanilla game no longer references them.</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.GameContentManagerForAssetPropagation.Tag">
            <summary>A unique value used in <see cref="T:Microsoft.Xna.Framework.Graphics.Texture2D"/> to identify assets loaded through this instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManagerForAssetPropagation.#ctor(System.String,System.IServiceProvider,System.String,System.Globalization.CultureInfo,StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.Reflection.Reflector,System.Action{StardewModdingAPI.Framework.ContentManagers.BaseContentManager},System.Action,System.Action{StardewModdingAPI.Framework.ContentManagers.BaseContentManager,StardewModdingAPI.IAssetName})">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManagerForAssetPropagation.LoadExact``1(StardewModdingAPI.IAssetName,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.GameContentManagerForAssetPropagation.IsResponsibleFor(Microsoft.Xna.Framework.Graphics.Texture2D)">
            <summary>Get whether a texture was loaded by this content manager.</summary>
            <param name="texture">The texture to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ContentManagers.IContentManager">
            <summary>A content manager which handles reading files.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.IContentManager.Name">
            <summary>A name for the mod manager. Not guaranteed to be unique.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.IContentManager.Language">
            <summary>The current language as a constant.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.IContentManager.FullRootDirectory">
            <summary>The absolute path to the <see cref="P:Microsoft.Xna.Framework.Content.ContentManager.RootDirectory"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentManagers.IContentManager.IsNamespaced">
            <summary>Whether this content manager can be targeted by managed asset keys (e.g. to load assets from a mod folder).</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.DoesAssetExist``1(StardewModdingAPI.IAssetName)">
            <summary>Get whether an asset exists and can be loaded.</summary>
            <typeparam name="T">The expected asset type.</typeparam>
            <param name="assetName">The normalized asset name.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.LoadLocalized``1(StardewModdingAPI.IAssetName,StardewValley.LocalizedContentManager.LanguageCode,System.Boolean)">
            <summary>Load an asset through the content pipeline, using a localized variant of the <paramref name="assetName"/> if available.</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="language">The language for which to load the asset.</param>
            <param name="useCache">Whether to read/write the loaded asset to the asset cache.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.LoadExact``1(StardewModdingAPI.IAssetName,System.Boolean)">
            <summary>Load an asset through the content pipeline, using the exact asset name without checking for localized variants.</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="useCache">Whether to read/write the loaded asset to the asset cache.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.AssertAndNormalizeAssetName(System.String)">
            <summary>Assert that the given key has a valid format and return a normalized form consistent with the underlying cache.</summary>
            <param name="assetName">The asset key to check.</param>
            <exception cref="T:StardewModdingAPI.Framework.Exceptions.SContentLoadException">The asset key is empty or contains invalid characters.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.GetLocale">
            <summary>Get the current content locale.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.GetLocale(StardewValley.LocalizedContentManager.LanguageCode)">
            <summary>Get the locale for a language.</summary>
            <param name="language">The language.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.IsLoaded(StardewModdingAPI.IAssetName)">
            <summary>Get whether the content manager has already loaded and cached the given asset.</summary>
            <param name="assetName">The asset path relative to the loader root directory, not including the <c>.xnb</c> extension.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.GetCachedAssets">
            <summary>Get all assets in the cache.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.IContentManager.InvalidateCache(StardewModdingAPI.IAssetName,System.Boolean)">
            <summary>Purge matched assets from the cache.</summary>
            <param name="assetName">The asset name to dispose.</param>
            <param name="dispose">Whether to dispose invalidated assets. This should only be <c>true</c> when they're being invalidated as part of a dispose, to avoid crashing the game.</param>
            <returns>Returns whether the asset was in the cache.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.ContentManagers.ModContentManager">
            <summary>A content manager which handles reading files from a SMAPI mod folder with support for unpacked files.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.ModContentManager.JsonHelper">
            <summary>Encapsulates SMAPI's JSON file parsing.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.ModContentManager.ModName">
            <summary>The mod display name to show in errors.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.ModContentManager.GameContentManager">
            <summary>The game content manager used for map tilesheets not provided by the mod.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.ModContentManager.FileLookup">
            <summary>A lookup for files within the <see cref="P:Microsoft.Xna.Framework.Content.ContentManager.RootDirectory"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LocalTilesheetExtensions">
            <summary>If a map tilesheet's image source has no file extensions, the file extensions to check for in the local mod folder.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.#ctor(System.String,StardewModdingAPI.Framework.ContentManagers.IContentManager,System.IServiceProvider,System.String,System.String,System.Globalization.CultureInfo,StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.Reflection.Reflector,StardewModdingAPI.Toolkit.Serialization.JsonHelper,System.Action{StardewModdingAPI.Framework.ContentManagers.BaseContentManager},StardewModdingAPI.Toolkit.Utilities.PathLookups.IFileLookup)">
            <summary>Construct an instance.</summary>
            <param name="name">A name for the mod manager. Not guaranteed to be unique.</param>
            <param name="gameContentManager">The game content manager used for map tilesheets not provided by the mod.</param>
            <param name="serviceProvider">The service provider to use to locate services.</param>
            <param name="modName">The mod display name to show in errors.</param>
            <param name="rootDirectory">The root directory to search for content.</param>
            <param name="currentCulture">The current culture for which to localize content.</param>
            <param name="coordinator">The central coordinator which manages content managers.</param>
            <param name="monitor">Encapsulates monitoring and logging.</param>
            <param name="reflection">Simplifies access to private code.</param>
            <param name="jsonHelper">Encapsulates SMAPI's JSON file parsing.</param>
            <param name="onDisposing">A callback to invoke when the content manager is being disposed.</param>
            <param name="fileLookup">A lookup for files within the <paramref name="rootDirectory"/>.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.DoesAssetExist``1(StardewModdingAPI.IAssetName)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadExact``1(StardewModdingAPI.IAssetName,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.CreateTemporary">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.GetInternalAssetKey(System.String)">
            <summary>Get the underlying key in the game's content cache for an asset. This does not validate whether the asset exists.</summary>
            <param name="key">The local path to a content file relative to the mod folder.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="key"/> is empty or contains invalid characters.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadFont``1(StardewModdingAPI.IAssetName,System.IO.FileInfo)">
            <summary>Load an unpacked font file (<c>.fnt</c>).</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="file">The file to load.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadDataFile``1(StardewModdingAPI.IAssetName,System.IO.FileInfo)">
            <summary>Load an unpacked data file (<c>.json</c>).</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="file">The file to load.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadImageFile``1(StardewModdingAPI.IAssetName,System.IO.FileInfo)">
            <summary>Load an unpacked image file (<c>.png</c>).</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="file">The file to load.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadRawImageData(System.IO.FileInfo,System.Boolean)">
            <summary>Load the raw image data from a file on disk.</summary>
            <param name="file">The file whose data to load.</param>
            <param name="forRawData">Whether the data is being loaded for an <see cref="T:StardewModdingAPI.IRawTextureData"/> (true) or <see cref="T:Microsoft.Xna.Framework.Graphics.Texture2D"/> (false) instance.</param>
            <remarks>This is separate to let framework mods intercept the data before it's loaded, if needed.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadMapFile``1(StardewModdingAPI.IAssetName,System.IO.FileInfo)">
            <summary>Load an unpacked image file (<c>.tbin</c> or <c>.tmx</c>).</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="file">The file to load.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadXnbFile``1(StardewModdingAPI.IAssetName)">
            <summary>Load a packed file (<c>.xnb</c>).</summary>
            <typeparam name="T">The type of asset to load.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.HandleUnknownFileType(StardewModdingAPI.IAssetName,System.IO.FileInfo,System.Type)">
            <summary>Handle a request to load a file type that isn't supported by SMAPI.</summary>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="file">The file to load.</param>
            <param name="assetType">The expected file type.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.AssertValidType``1(StardewModdingAPI.IAssetName,System.IO.FileInfo,System.Type[])">
            <summary>Assert that the asset type is compatible with one of the allowed types.</summary>
            <typeparam name="TAsset">The actual asset type.</typeparam>
            <param name="assetName">The asset name relative to the loader root directory.</param>
            <param name="file">The file being loaded.</param>
            <param name="validTypes">The allowed asset types.</param>
            <exception cref="T:StardewModdingAPI.Framework.Exceptions.SContentLoadException">The <typeparamref name="TAsset"/> is not compatible with any of the <paramref name="validTypes"/>.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.ThrowLoadError(StardewModdingAPI.IAssetName,StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType,System.String,System.Exception)">
            <summary>Throw an error which indicates that an asset couldn't be loaded.</summary>
            <param name="errorType">Why loading an asset through the content pipeline failed.</param>
            <param name="assetName">The asset name that failed to load.</param>
            <param name="reasonPhrase">The reason the file couldn't be loaded.</param>
            <param name="exception">The underlying exception, if applicable.</param>
            <exception cref="T:StardewModdingAPI.Framework.Exceptions.SContentLoadException" />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.GetModFile``1(System.String)">
            <summary>Get a file from the mod folder.</summary>
            <typeparam name="T">The expected asset type.</typeparam>
            <param name="path">The asset path relative to the content folder.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.PremultiplyTransparency(Microsoft.Xna.Framework.Graphics.Texture2D)">
            <summary>Premultiply a texture's alpha values to avoid transparency issues in the game.</summary>
            <param name="texture">The texture to premultiply.</param>
            <returns>Returns a premultiplied texture.</returns>
            <remarks>Based on <a href="https://gamedev.stackexchange.com/a/26037">code by David Gouveia</a>.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.FixTilesheetPaths(xTile.Map,System.String,System.Boolean)">
            <summary>Fix custom map tilesheet paths so they can be found by the content manager.</summary>
            <param name="map">The map whose tilesheets to fix.</param>
            <param name="relativeMapPath">The relative map path within the mod folder.</param>
            <param name="fixEagerPathPrefixes">Whether to undo the game's eager tilesheet path prefixing for maps loaded from an <c>.xnb</c> file, which incorrectly prefixes tilesheet paths with the map's local asset key folder.</param>
            <exception cref="T:Microsoft.Xna.Framework.Content.ContentLoadException">A map tilesheet couldn't be resolved.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.TryGetTilesheetAssetName(System.String,System.String,StardewModdingAPI.IAssetName@,System.String@)">
            <summary>Get the actual asset name for a tilesheet.</summary>
            <param name="modRelativeMapFolder">The folder path containing the map, relative to the mod folder.</param>
            <param name="relativePath">The tilesheet path to load.</param>
            <param name="assetName">The found asset name.</param>
            <param name="error">A message indicating why the file couldn't be loaded.</param>
            <returns>Returns whether the asset name was found.</returns>
            <remarks>See remarks on <see cref="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.FixTilesheetPaths(xTile.Map,System.String,System.Boolean)"/>.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.GetContentFolderFileExists(System.String)">
            <summary>Get whether a file from the game's content folder exists.</summary>
            <param name="key">The asset key.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentManagers.ModContentManager.GetContentKeyForTilesheetImageSource(System.String)">
            <summary>Get the asset key for a tilesheet in the game's <c>Maps</c> content folder.</summary>
            <param name="relativePath">The tilesheet image source.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ContentPack">
            <summary>Manages access to a content pack's metadata and files.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentPack.JsonHelper">
            <summary>Encapsulates SMAPI's JSON file parsing.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ContentPack.FileLookup">
            <summary>A lookup for files within the <see cref="P:StardewModdingAPI.Framework.ContentPack.DirectoryPath"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentPack.DirectoryPath">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentPack.Manifest">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentPack.Translation">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentPack.ModContent">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ContentPack.TranslationImpl">
            <summary>The underlying translation helper.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentPack.#ctor(System.String,StardewModdingAPI.IManifest,StardewModdingAPI.IModContentHelper,StardewModdingAPI.Framework.ModHelpers.TranslationHelper,StardewModdingAPI.Toolkit.Serialization.JsonHelper,StardewModdingAPI.Toolkit.Utilities.PathLookups.IFileLookup)">
            <summary>Construct an instance.</summary>
            <param name="directoryPath">The full path to the content pack's folder.</param>
            <param name="manifest">The content pack's manifest.</param>
            <param name="content">Provides an API for loading content assets from the content pack's folder.</param>
            <param name="translation">Provides translations stored in the content pack's <c>i18n</c> folder.</param>
            <param name="jsonHelper">Encapsulates SMAPI's JSON file parsing.</param>
            <param name="fileLookup">A lookup for files within the <paramref name="directoryPath"/>.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentPack.HasFile(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentPack.ReadJsonFile``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentPack.WriteJsonFile``1(System.String,``0)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ContentPack.GetFile(System.String)">
            <summary>Get the underlying file info.</summary>
            <param name="relativePath">The normalized file path relative to the content pack directory.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetData`1">
            <summary>Base implementation for a content helper which encapsulates access and changes to content being read from a data file.</summary>
            <typeparam name="TValue">The interface value type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.AssetData`1.OnDataReplaced">
            <summary>A callback to invoke when the data is replaced (if any).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetData`1.Data">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetData`1.#ctor(System.String,StardewModdingAPI.IAssetName,`0,System.Func{System.String,System.String},System.Action{`0})">
            <summary>Construct an instance.</summary>
            <param name="locale">The content's locale code, if the content is localized.</param>
            <param name="assetName">The asset name being read.</param>
            <param name="data">The content data being read.</param>
            <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
            <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetData`1.ReplaceWith(`0)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetDataForDictionary`2">
            <summary>Encapsulates access and changes to dictionary content being read from a data file.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForDictionary`2.#ctor(System.String,StardewModdingAPI.IAssetName,System.Collections.Generic.IDictionary{`0,`1},System.Func{System.String,System.String},System.Action{System.Collections.Generic.IDictionary{`0,`1}})">
            <summary>Construct an instance.</summary>
            <param name="locale">The content's locale code, if the content is localized.</param>
            <param name="assetName">The asset name being read.</param>
            <param name="data">The content data being read.</param>
            <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
            <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetDataForImage">
            <summary>Encapsulates access and changes to image content being read from a data file.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.AssetDataForImage.MinOpacity">
            <summary>The minimum value to consider non-transparent.</summary>
            <remarks>On Linux/macOS, fully transparent pixels may have an alpha up to 4 for some reason.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForImage.#ctor(System.String,StardewModdingAPI.IAssetName,Microsoft.Xna.Framework.Graphics.Texture2D,System.Func{System.String,System.String},System.Action{Microsoft.Xna.Framework.Graphics.Texture2D})">
            <summary>Construct an instance.</summary>
            <param name="locale">The content's locale code, if the content is localized.</param>
            <param name="assetName">The asset name being read.</param>
            <param name="data">The content data being read.</param>
            <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
            <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForImage.PatchImage(StardewModdingAPI.IRawTextureData,System.Nullable{Microsoft.Xna.Framework.Rectangle},System.Nullable{Microsoft.Xna.Framework.Rectangle},StardewModdingAPI.PatchMode)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForImage.PatchImage(Microsoft.Xna.Framework.Graphics.Texture2D,System.Nullable{Microsoft.Xna.Framework.Rectangle},System.Nullable{Microsoft.Xna.Framework.Rectangle},StardewModdingAPI.PatchMode)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForImage.ExtendImage(System.Int32,System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForImage.GetPatchBounds(System.Nullable{Microsoft.Xna.Framework.Rectangle}@,System.Nullable{Microsoft.Xna.Framework.Rectangle}@,System.Int32,System.Int32)">
            <summary>Get the bounds for an image patch.</summary>
            <param name="sourceArea">The source area to set if needed.</param>
            <param name="targetArea">The target area to set if needed.</param>
            <param name="sourceWidth">The width of the full source image.</param>
            <param name="sourceHeight">The height of the full source image.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForImage.PatchImageImpl(Microsoft.Xna.Framework.Color[],System.Int32,System.Int32,Microsoft.Xna.Framework.Rectangle,Microsoft.Xna.Framework.Rectangle,StardewModdingAPI.PatchMode,System.Int32)">
            <summary>Overwrite part of the image.</summary>
            <param name="sourceData">The image data to patch into the content.</param>
            <param name="sourceWidth">The pixel width of the original source image.</param>
            <param name="sourceHeight">The pixel height of the original source image.</param>
            <param name="sourceArea">The part of the <paramref name="sourceData"/> to copy (or <c>null</c> to take the whole texture). This must be within the bounds of the <paramref name="sourceData"/> texture.</param>
            <param name="targetArea">The part of the content to patch (or <c>null</c> to patch the whole texture). The original content within this area will be erased. This must be within the bounds of the existing spritesheet.</param>
            <param name="patchMode">Indicates how an image should be patched.</param>
            <param name="startRow">The row to start on, for the sourceData.</param>
            <exception cref="T:System.ArgumentNullException">One of the arguments is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="targetArea"/> is outside the bounds of the spritesheet.</exception>
            <exception cref="T:System.InvalidOperationException">The content being read isn't an image.</exception>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetDataForMap">
            <summary>Encapsulates access and changes to image content being read from a data file.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.AssetDataForMap.Reflection">
            <summary>Simplifies access to private code.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForMap.#ctor(System.String,StardewModdingAPI.IAssetName,xTile.Map,System.Func{System.String,System.String},System.Action{xTile.Map},StardewModdingAPI.Framework.Reflection.Reflector)">
            <summary>Construct an instance.</summary>
            <param name="locale">The content's locale code, if the content is localized.</param>
            <param name="assetName">The asset name being read.</param>
            <param name="data">The content data being read.</param>
            <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
            <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
            <param name="reflection">Simplifies access to private code.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForMap.PatchMap(xTile.Map,System.Nullable{Microsoft.Xna.Framework.Rectangle},System.Nullable{Microsoft.Xna.Framework.Rectangle},StardewModdingAPI.PatchMapMode)">
            <inheritdoc />
            <remarks>Derived from <see cref="!:GameLocation.ApplyMapOverride(Map,string,Rectangle?,Rectangle?)"/> with a few changes:
            - can be applied directly to the maps when loading, before the location is created;
            - added support for patch modes (overlay, replace by layer, or fully replace);
            - added disambiguation if source has a modified version of the same tilesheet, instead of copying tiles into the target tilesheet;
            - fixed copying tilesheets (avoid "The specified TileSheet was not created for use with this map" error);
            - fixed tilesheets not added at the end (via z_ prefix), which can cause crashes in game code which depends on hardcoded tilesheet indexes;
            - fixed issue where different tilesheets are linked by ID.
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForMap.ExtendMap(System.Int32,System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForMap.CreateTile(xTile.Tiles.Tile,xTile.Layers.Layer,xTile.Tiles.TileSheet)">
            <summary>Create a new tile for the target map.</summary>
            <param name="sourceTile">The source tile to copy.</param>
            <param name="targetLayer">The target layer.</param>
            <param name="targetSheet">The target tilesheet.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForMap.NormalizeTilesheetPathForComparison(System.String)">
            <summary>Normalize a map tilesheet path for comparison. This value should *not* be used as the actual tilesheet path.</summary>
            <param name="path">The path to normalize.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForMap.GetMapArea(xTile.Map)">
            <summary>Get a rectangle which encompasses all layers for a map.</summary>
            <param name="map">The map to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetDataForObject">
            <summary>Encapsulates access and changes to content being read from a data file.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.AssetDataForObject.Reflection">
            <summary>Simplifies access to private code.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForObject.#ctor(System.String,StardewModdingAPI.IAssetName,System.Object,System.Func{System.String,System.String},StardewModdingAPI.Framework.Reflection.Reflector,System.Action{System.Object})">
            <summary>Construct an instance.</summary>
            <param name="locale">The content's locale code, if the content is localized.</param>
            <param name="assetName">The asset name being read.</param>
            <param name="data">The content data being read.</param>
            <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
            <param name="reflection">Simplifies access to private code.</param>
            <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForObject.#ctor(StardewModdingAPI.IAssetInfo,System.Object,System.Func{System.String,System.String},StardewModdingAPI.Framework.Reflection.Reflector,System.Action{System.Object})">
            <summary>Construct an instance.</summary>
            <param name="info">The asset metadata.</param>
            <param name="data">The content data being read.</param>
            <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
            <param name="reflection">Simplifies access to private code.</param>
            <param name="onDataReplaced">A callback to invoke when the data is replaced (if any).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForObject.AsDictionary``2">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForObject.AsImage">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForObject.AsMap">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetDataForObject.GetData``1">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetEditOperation">
            <summary>An edit to apply to an asset when it's requested from the content pipeline.</summary>
            <param name="Mod">The mod applying the edit.</param>
            <param name="Priority">If there are multiple edits that apply to the same asset, the priority with which this one should be applied.</param>
            <param name="OnBehalfOf">The content pack on whose behalf the edit is being applied, if any.</param>
            <param name="ApplyEdit">Apply the edit to an asset.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetEditOperation.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Events.AssetEditPriority,StardewModdingAPI.Framework.IModMetadata,System.Action{StardewModdingAPI.IAssetData})">
            <summary>An edit to apply to an asset when it's requested from the content pipeline.</summary>
            <param name="Mod">The mod applying the edit.</param>
            <param name="Priority">If there are multiple edits that apply to the same asset, the priority with which this one should be applied.</param>
            <param name="OnBehalfOf">The content pack on whose behalf the edit is being applied, if any.</param>
            <param name="ApplyEdit">Apply the edit to an asset.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetEditOperation.Mod">
            <summary>The mod applying the edit.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetEditOperation.Priority">
            <summary>If there are multiple edits that apply to the same asset, the priority with which this one should be applied.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetEditOperation.OnBehalfOf">
            <summary>The content pack on whose behalf the edit is being applied, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetEditOperation.ApplyEdit">
            <summary>Apply the edit to an asset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.AssetInfo.GetNormalizedPath">
            <summary>Normalizes an asset key to match the cache key.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.AssetInfo.NameWithoutLocaleImpl">
            <summary>The backing field for <see cref="P:StardewModdingAPI.Framework.Content.AssetInfo.NameWithoutLocale"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetInfo.Locale">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetInfo.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetInfo.NameWithoutLocale">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetInfo.DataType">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetInfo.#ctor(System.String,StardewModdingAPI.IAssetName,System.Type,System.Func{System.String,System.String})">
            <summary>Construct an instance.</summary>
            <param name="locale">The content's locale code, if the content is localized.</param>
            <param name="assetName">The asset name being read.</param>
            <param name="type">The content type being read.</param>
            <param name="getNormalizedPath">Normalizes an asset key to match the cache key.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetInfo.GetFriendlyTypeName(System.Type)">
            <summary>Get a human-readable type name.</summary>
            <param name="type">The type to name.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetLoadOperation">
            <summary>An operation which provides the initial instance of an asset when it's requested from the content pipeline.</summary>
            <param name="Mod">The mod applying the edit.</param>
            <param name="Priority">If there are multiple loads that apply to the same asset, the priority with which this one should be applied.</param>
            <param name="OnBehalfOf">The content pack on whose behalf the asset is being loaded, if any.</param>
            <param name="GetData">Load the initial value for an asset.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetLoadOperation.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Events.AssetLoadPriority,System.Func{StardewModdingAPI.IAssetInfo,System.Object})">
            <summary>An operation which provides the initial instance of an asset when it's requested from the content pipeline.</summary>
            <param name="Mod">The mod applying the edit.</param>
            <param name="Priority">If there are multiple loads that apply to the same asset, the priority with which this one should be applied.</param>
            <param name="OnBehalfOf">The content pack on whose behalf the asset is being loaded, if any.</param>
            <param name="GetData">Load the initial value for an asset.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetLoadOperation.Mod">
            <summary>The mod applying the edit.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetLoadOperation.OnBehalfOf">
            <summary>The content pack on whose behalf the asset is being loaded, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetLoadOperation.Priority">
            <summary>If there are multiple loads that apply to the same asset, the priority with which this one should be applied.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetLoadOperation.GetData">
            <summary>Load the initial value for an asset.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetName">
            <summary>An asset name that can be loaded through the content pipeline.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.AssetName.ComparableName">
            <summary>A lowercase version of <see cref="P:StardewModdingAPI.Framework.Content.AssetName.Name"/> used for consistent hash codes and equality checks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetName.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetName.BaseName">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetName.LocaleCode">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetName.LanguageCode">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.#ctor(System.String,System.String,System.Nullable{StardewValley.LocalizedContentManager.LanguageCode})">
            <summary>Construct an instance.</summary>
            <param name="baseName">The base asset name without the locale code.</param>
            <param name="localeCode">The locale code specified in the <see cref="P:StardewModdingAPI.Framework.Content.AssetName.Name"/>, if it's a valid code recognized by the game content.</param>
            <param name="languageCode">The language code matching the <see cref="P:StardewModdingAPI.Framework.Content.AssetName.LocaleCode"/>, if applicable.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.Parse(System.String,System.Func{System.String,System.Nullable{StardewValley.LocalizedContentManager.LanguageCode}})">
            <summary>Parse a raw asset name into an instance.</summary>
            <param name="rawName">The raw asset name to parse.</param>
            <param name="parseLocale">Get the language code for a given locale, if it's valid.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="rawName"/> is null or empty.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.IsEquivalentTo(System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.IsEquivalentTo(StardewModdingAPI.IAssetName,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.StartsWith(System.String,System.Boolean,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.IsDirectlyUnderPath(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.StardewModdingAPI#IAssetName#GetBaseAssetName">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.Equals(StardewModdingAPI.IAssetName)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.GetHashCode">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetName.ToString">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.AssetOperationGroup">
            <summary>A set of operations to apply to an asset.</summary>
            <param name="LoadOperations">The load operations to apply.</param>
            <param name="EditOperations">The edit operations to apply.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.AssetOperationGroup.#ctor(System.Collections.Generic.List{StardewModdingAPI.Framework.Content.AssetLoadOperation},System.Collections.Generic.List{StardewModdingAPI.Framework.Content.AssetEditOperation})">
            <summary>A set of operations to apply to an asset.</summary>
            <param name="LoadOperations">The load operations to apply.</param>
            <param name="EditOperations">The edit operations to apply.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetOperationGroup.LoadOperations">
            <summary>The load operations to apply.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.AssetOperationGroup.EditOperations">
            <summary>The edit operations to apply.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.ContentCache">
            <summary>A low-level wrapper around the content cache which handles reading, writing, and invalidating entries in the cache. This doesn't handle any higher-level logic like localization, loading content, etc. It assumes all keys passed in are already normalized.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.ContentCache.Cache">
            <summary>The underlying asset cache.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.ContentCache.Item(System.String)">
            <summary>Get or set the value of a raw cache entry.</summary>
            <param name="key">The cache key.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.ContentCache.Keys">
            <summary>The current cache keys.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.ContentCache.#ctor(System.Collections.Generic.Dictionary{System.String,System.Object})">
            <summary>Construct an instance.</summary>
            <param name="loadedAssets">The asset cache for the underlying content manager.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.ContentCache.ContainsKey(System.String)">
            <summary>Get whether the cache contains a given key.</summary>
            <param name="key">The cache key.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.ContentCache.NormalizePathSeparators(System.String)">
            <summary>Normalize path separators in an asset name.</summary>
            <param name="path">The file path to normalize.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.ContentCache.NormalizeKey(System.String)">
            <summary>Normalize a cache key so it's consistent with the underlying cache.</summary>
            <param name="key">The asset key.</param>
            <remarks>This is equivalent to <see cref="M:StardewModdingAPI.Framework.Content.ContentCache.NormalizePathSeparators(System.String)"/> with added file extension logic.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.ContentCache.Remove(System.String,System.Boolean)">
            <summary>Remove an asset with the given key.</summary>
            <param name="key">The cache key.</param>
            <param name="dispose">Whether to dispose the entry value, if applicable.</param>
            <returns>Returns the removed key (if any).</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.ContentCache.Remove(System.Func{System.String,System.Object,System.Boolean},System.Boolean)">
            <summary>Purge assets matching <paramref name="predicate"/> from the cache.</summary>
            <param name="predicate">Matches the asset keys to invalidate.</param>
            <param name="dispose">Whether to dispose invalidated assets. This should only be <see langword="true"/> when they're being invalidated as part of a <see cref="M:System.IDisposable.Dispose"/>, to avoid crashing the game.</param>
            <returns>Returns any removed keys.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.RawTextureData">
            <summary>The raw data for an image read from the filesystem.</summary>
            <param name="Width">The image width.</param>
            <param name="Height">The image height.</param>
            <param name="Data">The loaded image data.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.RawTextureData.#ctor(System.Int32,System.Int32,Microsoft.Xna.Framework.Color[])">
            <summary>The raw data for an image read from the filesystem.</summary>
            <param name="Width">The image width.</param>
            <param name="Height">The image height.</param>
            <param name="Data">The loaded image data.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.RawTextureData.Width">
            <summary>The image width.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.RawTextureData.Height">
            <summary>The image height.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Content.RawTextureData.Data">
            <summary>The loaded image data.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Content.TilesheetReference">
            <summary>Basic metadata about a vanilla tilesheet.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.TilesheetReference.Index">
            <summary>The tilesheet's index in the list.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.TilesheetReference.Id">
            <summary>The tilesheet's unique ID in the map.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.TilesheetReference.ImageSource">
            <summary>The asset path for the tilesheet texture.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.TilesheetReference.SheetSize">
            <summary>The number of tiles in the tilesheet.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Content.TilesheetReference.TileSize">
            <summary>The size of each tile in pixels.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Content.TilesheetReference.#ctor(System.Int32,System.String,System.String,xTile.Dimensions.Size,xTile.Dimensions.Size)">
            <summary>Construct an instance.</summary>
            <param name="index">The tilesheet's index in the list.</param>
            <param name="id">The tilesheet's unique ID in the map.</param>
            <param name="imageSource">The asset path for the tilesheet texture.</param>
            <param name="sheetSize">The number of tiles in the tilesheet.</param>
            <param name="tileSize">The size of each tile in pixels.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.CursorPosition">
            <summary>Defines a position on a given map at different reference points.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.CursorPosition.AbsolutePixels">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.CursorPosition.ScreenPixels">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.CursorPosition.Tile">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.CursorPosition.GrabTile">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.CursorPosition.#ctor(Microsoft.Xna.Framework.Vector2,Microsoft.Xna.Framework.Vector2,Microsoft.Xna.Framework.Vector2,Microsoft.Xna.Framework.Vector2)">
            <summary>Construct an instance.</summary>
            <param name="absolutePixels">The pixel position relative to the top-left corner of the in-game map, adjusted for zoom but not UI scaling.</param>
            <param name="screenPixels">The pixel position relative to the top-left corner of the visible screen, adjusted for zoom but not UI scaling.</param>
            <param name="tile">The tile position relative to the top-left corner of the map.</param>
            <param name="grabTile">The tile position that the game considers under the cursor for purposes of clicking actions.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.CursorPosition.Equals(StardewModdingAPI.ICursorPosition)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.CursorPosition.GetScaledAbsolutePixels">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.CursorPosition.GetScaledScreenPixels">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Deprecations.DeprecationLevel">
            <summary>Indicates how deprecated something is.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.DeprecationLevel.Notice">
            <summary>It's deprecated but won't be removed soon. Mod authors have some time to update their mods. Deprecation warnings should be logged, but not written to the console.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.DeprecationLevel.Info">
            <summary>Mods should no longer be using it. Deprecation messages should be debug entries in the console.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.DeprecationLevel.PendingRemoval">
            <summary>The code will be removed soon. Deprecation messages should be warnings in the console.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Deprecations.DeprecationManager">
            <summary>Manages deprecation warnings.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.DeprecationManager.LoggedDeprecations">
            <summary>The deprecations which have already been logged (as 'mod name::noun phrase::version').</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.DeprecationManager.Monitor">
            <summary>Encapsulates monitoring and logging for a given module.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.DeprecationManager.ModRegistry">
            <summary>Tracks the installed mods.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.DeprecationManager.QueuedWarnings">
            <summary>The queued deprecation warnings to display.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationManager.#ctor(StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.ModRegistry)">
            <summary>Construct an instance.</summary>
            <param name="monitor">Encapsulates monitoring and logging for a given module.</param>
            <param name="modRegistry">Tracks the installed mods.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationManager.GetMod(System.String)">
            <summary>Get a mod from its unique ID.</summary>
            <param name="modId">The mod's unique ID.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationManager.Warn(StardewModdingAPI.Framework.IModMetadata,System.String,System.String,StardewModdingAPI.Framework.Deprecations.DeprecationLevel,System.String[],System.Boolean)">
            <summary>Log a deprecation warning.</summary>
            <param name="source">The mod which used the deprecated code, or <c>null</c> to get it heuristically. Note that getting it heuristically is very slow in some cases, and should be avoided if at all possible.</param>
            <param name="nounPhrase">A noun phrase describing what is deprecated.</param>
            <param name="version">The SMAPI version which deprecated it.</param>
            <param name="severity">How deprecated the code is.</param>
            <param name="unlessStackIncludes">A list of stack trace substrings which should suppress deprecation warnings if they appear in the stack trace.</param>
            <param name="logStackTrace">Whether to log a stack trace showing where the deprecated code is in the mod.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationManager.PlaceholderWarn(System.String,StardewModdingAPI.Framework.Deprecations.DeprecationLevel)">
            <summary>A placeholder method used to track deprecated code for which a separate warning will be shown.</summary>
            <param name="version">The SMAPI version which deprecated it.</param>
            <param name="severity">How deprecated the code is.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationManager.PrintQueued">
            <summary>Print any queued messages.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationManager.ShouldSuppress(StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace,System.String[])">
            <summary>Get whether a deprecation warning should be suppressed.</summary>
            <param name="stack">The stack trace for which it was raised.</param>
            <param name="unlessStackIncludes">A list of stack trace substrings which should suppress deprecation warnings if they appear in the stack trace.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationManager.GetSimplifiedStackTrace(StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace,StardewModdingAPI.Framework.IModMetadata)">
            <summary>Get the simplest stack trace which shows where in the mod the deprecated code was called from.</summary>
            <param name="stack">The stack trace.</param>
            <param name="mod">The mod for which to show a stack trace.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Deprecations.DeprecationWarning">
            <summary>A deprecation warning for a mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.Mod">
            <summary>The affected mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.ModName">
            <summary>Get the display name for the affected mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.NounPhrase">
            <summary>A noun phrase describing what is deprecated.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.Version">
            <summary>The SMAPI version which deprecated it.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.Level">
            <summary>The deprecation level for the affected code.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.StackTrace">
            <summary>The stack trace when the deprecation warning was raised.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.LogStackTrace">
            <summary>Whether to log a stack trace showing where the deprecated code is in the mod.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.DeprecationWarning.#ctor(StardewModdingAPI.Framework.IModMetadata,System.String,System.String,StardewModdingAPI.Framework.Deprecations.DeprecationLevel,StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="mod">The affected mod.</param>
            <param name="nounPhrase">A noun phrase describing what is deprecated.</param>
            <param name="version">The SMAPI version which deprecated it.</param>
            <param name="level">The deprecation level for the affected code.</param>
            <param name="stackTrace">The stack trace when the deprecation warning was raised.</param>
            <param name="logStackTrace">Whether to log a stack trace showing where the deprecated code is in the mod.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace">
            <summary>An immutable stack trace that caches its values.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace.StackTrace">
            <summary>The underlying stack trace.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace.Frames">
            <summary>The individual method calls in the stack trace.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace.StringForm">
            <summary>The string representation of the stack trace.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace.#ctor(System.Diagnostics.StackTrace)">
            <summary>Construct an instance.</summary>
            <param name="stackTrace">The underlying stack trace.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace.GetFrames">
            <summary>Get the underlying frames.</summary>
            <remarks>This is a reference to the underlying stack frames, so this array should not be edited.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace.ToString">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Deprecations.ImmutableStackTrace.Get(System.Int32)">
            <summary>Get the current stack trace.</summary>
            <param name="skipFrames">The number of frames up the stack from which to start the trace.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.EventManager">
            <summary>Manages SMAPI events.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.AssetRequested">
            <inheritdoc cref="E:StardewModdingAPI.Events.IContentEvents.AssetRequested" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.AssetsInvalidated">
            <inheritdoc cref="E:StardewModdingAPI.Events.IContentEvents.AssetsInvalidated" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.AssetReady">
            <inheritdoc cref="E:StardewModdingAPI.Events.IContentEvents.AssetReady" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.LocaleChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IContentEvents.LocaleChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.MenuChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.MenuChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.Rendering">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.Rendering" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.Rendered">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.Rendered" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderingStep">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingStep" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderedStep">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedStep" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderingWorld">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingWorld" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderedWorld">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedWorld" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderingActiveMenu">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingActiveMenu" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderedActiveMenu">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedActiveMenu" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderingHud">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderingHud" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.RenderedHud">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.RenderedHud" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.WindowResized">
            <inheritdoc cref="E:StardewModdingAPI.Events.IDisplayEvents.WindowResized" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.GameLaunched">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.GameLaunched" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.UpdateTicking">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.UpdateTicking" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.UpdateTicked">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.UpdateTicked" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.OneSecondUpdateTicking">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.OneSecondUpdateTicking" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.OneSecondUpdateTicked">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.OneSecondUpdateTicked" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.SaveCreating">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.SaveCreating" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.SaveCreated">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.SaveCreated" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.Saving">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.Saving" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.Saved">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.Saved" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.SaveLoaded">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.SaveLoaded" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.DayStarted">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.DayStarted" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.DayEnding">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.DayEnding" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.TimeChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.TimeChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.ReturnedToTitle">
            <inheritdoc cref="E:StardewModdingAPI.Events.IGameLoopEvents.ReturnedToTitle" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.ButtonsChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IInputEvents.ButtonsChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.ButtonPressed">
            <inheritdoc cref="E:StardewModdingAPI.Events.IInputEvents.ButtonPressed" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.ButtonReleased">
            <inheritdoc cref="E:StardewModdingAPI.Events.IInputEvents.ButtonReleased" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.CursorMoved">
            <inheritdoc cref="E:StardewModdingAPI.Events.IInputEvents.CursorMoved" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.MouseWheelScrolled">
            <inheritdoc cref="E:StardewModdingAPI.Events.IInputEvents.MouseWheelScrolled" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.PeerContextReceived">
            <inheritdoc cref="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerContextReceived" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.PeerConnected">
            <inheritdoc cref="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerConnected" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.ModMessageReceived">
            <inheritdoc cref="E:StardewModdingAPI.Events.IMultiplayerEvents.ModMessageReceived" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.PeerDisconnected">
            <inheritdoc cref="E:StardewModdingAPI.Events.IMultiplayerEvents.PeerDisconnected" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.InventoryChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IPlayerEvents.InventoryChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.LevelChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IPlayerEvents.LevelChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.Warped">
            <inheritdoc cref="E:StardewModdingAPI.Events.IPlayerEvents.Warped" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.LocationListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.LocationListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.BuildingListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.BuildingListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.DebrisListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.DebrisListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.LargeTerrainFeatureListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.LargeTerrainFeatureListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.NpcListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.NpcListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.ObjectListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.ObjectListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.ChestInventoryChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.ChestInventoryChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.TerrainFeatureListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.TerrainFeatureListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.FurnitureListChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.IWorldEvents.FurnitureListChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.LoadStageChanged">
            <inheritdoc cref="E:StardewModdingAPI.Events.ISpecializedEvents.LoadStageChanged" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.UnvalidatedUpdateTicking">
            <inheritdoc cref="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicking" />
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.EventManager.UnvalidatedUpdateTicked">
            <inheritdoc cref="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicked" />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.EventManager.#ctor(StardewModdingAPI.Framework.ModRegistry)">
            <summary>Construct an instance.</summary>
            <param name="modRegistry">The mod registry with which to identify mods.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.IManagedEvent">
            <summary>Metadata for an event raised by SMAPI.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.IManagedEvent.EventName">
            <summary>A human-readable name for the event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.IManagedEvent.HasListeners">
            <summary>Whether any handlers are listening to the event.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ManagedEvent`1">
            <summary>An event wrapper which intercepts and logs errors in handler code.</summary>
            <typeparam name="TEventArgs">The event arguments type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ManagedEvent`1.ModRegistry">
            <summary>The mod registry with which to identify mods.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ManagedEvent`1.Handlers">
            <summary>The underlying event handlers.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ManagedEvent`1.CachedHandlers">
            <summary>A cached snapshot of the <see cref="F:StardewModdingAPI.Framework.Events.ManagedEvent`1.Handlers"/> sorted by event priority, or <c>null</c> to rebuild it next raise.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ManagedEvent`1.RegistrationIndex">
            <summary>The total number of event handlers registered for this events, regardless of whether they're still registered.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ManagedEvent`1.HasRemovedHandlers">
            <summary>Whether handlers were removed since the last raise.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ManagedEvent`1.HasPriorities">
            <summary>Whether any of the handlers have a custom priority.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ManagedEvent`1.EventName">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ManagedEvent`1.HasListeners">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEvent`1.#ctor(System.String,StardewModdingAPI.Framework.ModRegistry)">
            <summary>Construct an instance.</summary>
            <param name="eventName">A human-readable name for the event.</param>
            <param name="modRegistry">The mod registry with which to identify mods.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEvent`1.Add(System.EventHandler{`0},StardewModdingAPI.Framework.IModMetadata)">
            <summary>Add an event handler.</summary>
            <param name="handler">The event handler.</param>
            <param name="mod">The mod which added the event handler.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEvent`1.Remove(System.EventHandler{`0})">
            <summary>Remove an event handler.</summary>
            <param name="handler">The event handler.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEvent`1.Raise(`0)">
            <summary>Raise the event and notify all handlers.</summary>
            <param name="args">The event arguments to pass.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEvent`1.Raise(System.Action{StardewModdingAPI.Framework.IModMetadata,System.Action{`0}})">
            <summary>Raise the event and notify all handlers.</summary>
            <param name="invoke">Invoke an event handler. This receives the mod which registered the handler, and should invoke the callback with the event arguments to pass it.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEvent`1.LogError(StardewModdingAPI.Framework.Events.ManagedEventHandler{`0},System.Exception)">
            <summary>Log an exception from an event handler.</summary>
            <param name="handler">The event handler instance.</param>
            <param name="ex">The exception that was raised.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEvent`1.GetHandlers">
            <summary>Get cached copy of the sorted handlers to invoke.</summary>
            <remarks>This returns the handlers sorted by priority, and allows iterating the list even if a mod adds/removes handlers while handling it. This is debounced when requested to avoid repeatedly sorting when handlers are added/removed.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ManagedEventHandler`1">
            <summary>An event handler wrapper which tracks metadata about an event handler.</summary>
            <typeparam name="TEventArgs">The event arguments type.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ManagedEventHandler`1.Handler">
            <summary>The event handler method.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ManagedEventHandler`1.RegistrationOrder">
            <summary>The order in which the event handler was registered, relative to other handlers for this event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ManagedEventHandler`1.Priority">
            <summary>The event handler priority, relative to other handlers for this event.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ManagedEventHandler`1.SourceMod">
            <summary>The mod which registered the handler.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEventHandler`1.#ctor(System.EventHandler{`0},System.Int32,StardewModdingAPI.Events.EventPriority,StardewModdingAPI.Framework.IModMetadata)">
            <summary>Construct an instance.</summary>
            <param name="handler">The event handler method.</param>
            <param name="registrationOrder">The order in which the event handler was registered, relative to other handlers for this event.</param>
            <param name="priority">The event handler priority, relative to other handlers for this event.</param>
            <param name="sourceMod">The mod which registered the handler.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ManagedEventHandler`1.CompareTo(System.Object)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModContentEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.IContentEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModContentEvents.AssetRequested">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModContentEvents.AssetsInvalidated">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModContentEvents.AssetReady">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModContentEvents.LocaleChanged">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModContentEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModDisplayEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.IDisplayEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.MenuChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderingStep">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderedStep">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.Rendering">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.Rendered">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderingWorld">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderedWorld">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderingActiveMenu">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderedActiveMenu">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderingHud">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.RenderedHud">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModDisplayEvents.WindowResized">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModDisplayEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModEvents">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.Content">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.Display">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.GameLoop">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.Input">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.Multiplayer">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.Player">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.World">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Events.ModEvents.Specialized">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModEventsBase">
            <summary>An internal base class for event API classes.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ModEventsBase.EventManager">
            <summary>The underlying event manager.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Events.ModEventsBase.Mod">
            <summary>The mod which uses this instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModEventsBase.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModGameLoopEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.IGameLoopEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.GameLaunched">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.UpdateTicking">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.UpdateTicked">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.OneSecondUpdateTicking">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.OneSecondUpdateTicked">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.SaveCreating">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.SaveCreated">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.Saving">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.Saved">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.SaveLoaded">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.DayStarted">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.DayEnding">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.TimeChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModGameLoopEvents.ReturnedToTitle">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModGameLoopEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModInputEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.IInputEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModInputEvents.ButtonsChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModInputEvents.ButtonPressed">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModInputEvents.ButtonReleased">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModInputEvents.CursorMoved">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModInputEvents.MouseWheelScrolled">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModInputEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModMultiplayerEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.IMultiplayerEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModMultiplayerEvents.PeerContextReceived">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModMultiplayerEvents.PeerConnected">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModMultiplayerEvents.ModMessageReceived">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModMultiplayerEvents.PeerDisconnected">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModMultiplayerEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModPlayerEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.IPlayerEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModPlayerEvents.InventoryChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModPlayerEvents.LevelChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModPlayerEvents.Warped">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModPlayerEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModSpecializedEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.ISpecializedEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModSpecializedEvents.LoadStageChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModSpecializedEvents.UnvalidatedUpdateTicking">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModSpecializedEvents.UnvalidatedUpdateTicked">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModSpecializedEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Events.ModWorldEvents">
            <inheritdoc cref="T:StardewModdingAPI.Events.IWorldEvents" />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.LocationListChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.BuildingListChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.DebrisListChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.LargeTerrainFeatureListChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.NpcListChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.ObjectListChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.ChestInventoryChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.TerrainFeatureListChanged">
            <inheritdoc />
        </member>
        <member name="E:StardewModdingAPI.Framework.Events.ModWorldEvents.FurnitureListChanged">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Events.ModWorldEvents.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.Events.EventManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod which uses this instance.</param>
            <param name="eventManager">The underlying event manager.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType">
            <summary>Indicates why loading an asset through the content pipeline failed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType.InvalidName">
            <summary>The asset name is empty or has an invalid format.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType.AssetDoesNotExist">
            <summary>The asset doesn't exist.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType.AccessDenied">
            <summary>The asset is not available in the current context (e.g. an attempt to load another mod's assets).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType.InvalidData">
            <summary>The asset exists, but the data could not be deserialized or it doesn't match the expected type.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType.Other">
            <summary>An unknown error occurred.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Exceptions.SAssemblyLoadFailedException">
            <summary>An exception thrown when an assembly can't be loaded by SMAPI, with all the relevant details in the message.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Exceptions.SAssemblyLoadFailedException.#ctor(System.String)">
            <summary>Construct an instance.</summary>
            <param name="message">The error message.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Exceptions.SContentLoadException">
            <summary>An implementation of <see cref="T:Microsoft.Xna.Framework.Content.ContentLoadException"/> used by SMAPI to detect whether it was thrown by SMAPI or the underlying framework.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Exceptions.SContentLoadException.ErrorType">
            <summary>Why loading the asset through the content pipeline failed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Exceptions.SContentLoadException.#ctor(StardewModdingAPI.Framework.Exceptions.ContentLoadErrorType,System.String,System.Exception)">
            <summary>Construct an instance.</summary>
            <param name="errorType">Why loading the asset through the content pipeline failed.</param>
            <param name="message">The error message.</param>
            <param name="ex">The underlying exception, if any.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ExitState">
            <summary>The SMAPI exit state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ExitState.None">
            <summary>SMAPI didn't trigger an explicit exit.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ExitState.GameExit">
            <summary>The game is exiting normally.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ExitState.Crash">
            <summary>The game is exiting due to an error.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.GameVersion">
            <summary>An extension of <see cref="T:StardewModdingAPI.ISemanticVersion"/> that correctly handles non-semantic versions used by Stardew Valley.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.GameVersion.VersionMap">
            <summary>A mapping of game to semantic versions.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.GameVersion.#ctor(System.String)">
            <summary>Construct an instance.</summary>
            <param name="version">The game version string.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.GameVersion.ToString">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.GameVersion.GetSemanticVersionString(System.String)">
            <summary>Convert a game version string to a semantic version string.</summary>
            <param name="gameVersion">The game version string.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.GameVersion.GetGameVersionString(System.String)">
            <summary>Convert a semantic version string to the equivalent game version string.</summary>
            <param name="semanticVersion">The semantic version string.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.IModMetadata">
            <summary>Metadata for a mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.DisplayName">
            <summary>The mod's display name.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.RootPath">
            <summary>The root path containing mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.DirectoryPath">
            <summary>The mod's full directory path within the <see cref="P:StardewModdingAPI.Framework.IModMetadata.RootPath"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.RelativeDirectoryPath">
            <summary>The <see cref="P:StardewModdingAPI.Framework.IModMetadata.DirectoryPath"/> relative to the <see cref="P:StardewModdingAPI.Framework.IModMetadata.RootPath"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.DataRecord">
            <summary>Metadata about the mod from SMAPI's internal data (if any).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.Status">
            <summary>The metadata resolution status.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.FailReason">
            <summary>The reason the mod failed to load, if applicable.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.Warnings">
            <summary>The non-error issues with the mod, ignoring those suppressed via <see cref="P:StardewModdingAPI.Framework.IModMetadata.DataRecord"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.Error">
            <summary>The reason the metadata is invalid, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.ErrorDetails">
            <summary>A detailed technical message for <see cref="P:StardewModdingAPI.Framework.IModMetadata.Error"/>, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.IsIgnored">
            <summary>Whether the mod folder should be ignored. This is <c>true</c> if it was found within a folder whose name starts with a dot.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.Mod">
            <summary>The mod instance (if loaded and <see cref="P:StardewModdingAPI.IModInfo.IsContentPack"/> is false).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.ContentPack">
            <summary>The content pack instance (if loaded and <see cref="P:StardewModdingAPI.IModInfo.IsContentPack"/> is true).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.Translations">
            <summary>The translations for this mod (if loaded).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.Monitor">
            <summary>Writes messages to the console and log file as this mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.Api">
            <summary>The mod-provided API (if any).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.UpdateCheckData">
            <summary>The update-check metadata for this mod (if any).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.IModMetadata.FakeContentPacks">
            <summary>The fake content packs created by this mod, if any.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.SetStatusFound">
            <summary>Set the mod status to <see cref="F:StardewModdingAPI.Framework.ModLoading.ModMetadataStatus.Found"/>.</summary>
            <returns>Return the instance for chaining.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.SetStatus(StardewModdingAPI.Framework.ModLoading.ModMetadataStatus,StardewModdingAPI.Framework.ModLoading.ModFailReason,System.String,System.String)">
            <summary>Set the mod status.</summary>
            <param name="status">The metadata resolution status.</param>
            <param name="reason">The reason a mod could not be loaded.</param>
            <param name="error">The reason the metadata is invalid, if any.</param>
            <param name="errorDetails">A detailed technical message, if any.</param>
            <returns>Return the instance for chaining.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.SetWarning(StardewModdingAPI.Toolkit.Framework.ModData.ModWarning)">
            <summary>Set a warning flag for the mod.</summary>
            <param name="warning">The warning to set.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.RemoveWarning(StardewModdingAPI.Toolkit.Framework.ModData.ModWarning)">
            <summary>Remove a warning flag for the mod.</summary>
            <param name="warning">The warning to remove.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.SetMod(StardewModdingAPI.IMod,StardewModdingAPI.Framework.ModHelpers.TranslationHelper)">
            <summary>Set the mod instance.</summary>
            <param name="mod">The mod instance to set.</param>
            <param name="translations">The translations for this mod (if loaded).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.SetMod(StardewModdingAPI.IContentPack,StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.ModHelpers.TranslationHelper)">
            <summary>Set the mod instance.</summary>
            <param name="contentPack">The contentPack instance to set.</param>
            <param name="monitor">Writes messages to the console and log file.</param>
            <param name="translations">The translations for this mod (if loaded).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.SetApi(System.Object)">
            <summary>Set the mod-provided API instance.</summary>
            <param name="api">The mod-provided API.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.SetUpdateData(StardewModdingAPI.Toolkit.Framework.Clients.WebApi.ModEntryModel)">
            <summary>Set the update-check metadata for this mod.</summary>
            <param name="data">The update-check metadata.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.HasManifest">
            <summary>Whether the mod manifest was loaded (regardless of whether the mod itself was loaded).</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.HasID">
            <summary>Whether the mod has an ID (regardless of whether the ID is valid or the mod itself was loaded).</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.HasID(System.String)">
            <summary>Whether the mod has the given ID.</summary>
            <param name="id">The mod ID to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.GetUpdateKeys(System.Boolean)">
            <summary>Get the defined update keys.</summary>
            <param name="validOnly">Only return valid update keys.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.HasRequiredModId(System.String,System.Boolean)">
            <summary>Get whether the given mod ID must be installed to load this mod.</summary>
            <param name="modId">The mod ID to check.</param>
            <param name="includeOptional">Whether to include optional dependencies.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.GetRequiredModIds(System.Boolean)">
            <summary>Get the mod IDs that must be installed to load this mod.</summary>
            <param name="includeOptional">Whether to include optional dependencies.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.HasValidUpdateKeys">
            <summary>Whether the mod has at least one valid update key set.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.HasWarnings(StardewModdingAPI.Toolkit.Framework.ModData.ModWarning[])">
            <summary>Get whether the mod has any of the given warnings, ignoring those suppressed via <see cref="P:StardewModdingAPI.Framework.IModMetadata.DataRecord"/>.</summary>
            <param name="warnings">The warnings to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.GetRelativePathWithRoot">
            <summary>Get a relative path which includes the root folder name.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.IModMetadata.GetFakeContentPacks">
            <summary>Get the currently live fake content packs created by this mod.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Input.GamePadStateBuilder">
            <summary>Manages controller state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.LeftThumbstickDeadZone">
            <summary>The maximum direction to ignore for the left thumbstick.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.RightThumbstickDeadZone">
            <summary>The maximum direction to ignore for the right thumbstick.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.State">
            <summary>The underlying controller state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.ButtonStates">
            <summary>The current button states.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.LeftTrigger">
            <summary>The left trigger value.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.RightTrigger">
            <summary>The right trigger value.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.LeftStickPos">
            <summary>The left thumbstick position.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.GamePadStateBuilder.RightStickPos">
            <summary>The left thumbstick position.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.GamePadStateBuilder.IsConnected">
            <summary>Whether the gamepad is currently connected.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.GamePadStateBuilder.#ctor(Microsoft.Xna.Framework.Input.GamePadState)">
            <summary>Construct an instance.</summary>
            <param name="state">The initial state.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.GamePadStateBuilder.OverrideButtons(System.Collections.Generic.IDictionary{StardewModdingAPI.SButton,StardewModdingAPI.SButtonState})">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.GamePadStateBuilder.GetPressedButtons">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.GamePadStateBuilder.GetState">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.GamePadStateBuilder.GetPressedGamePadButtons">
            <summary>Get the pressed gamepad buttons.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Input.IInputStateBuilder`2">
            <summary>Manages input state.</summary>
            <typeparam name="THandler">The handler type.</typeparam>
            <typeparam name="TState">The state type.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.IInputStateBuilder`2.OverrideButtons(System.Collections.Generic.IDictionary{StardewModdingAPI.SButton,StardewModdingAPI.SButtonState})">
            <summary>Override the states for a set of buttons.</summary>
            <param name="overrides">The button state overrides.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.IInputStateBuilder`2.GetPressedButtons">
            <summary>Get the currently pressed buttons.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.IInputStateBuilder`2.GetState">
            <summary>Get the equivalent state.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Input.KeyboardStateBuilder">
            <summary>Manages keyboard state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.KeyboardStateBuilder.State">
            <summary>The underlying keyboard state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.KeyboardStateBuilder.PressedButtons">
            <summary>The pressed buttons.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.KeyboardStateBuilder.#ctor(Microsoft.Xna.Framework.Input.KeyboardState)">
            <summary>Construct an instance.</summary>
            <param name="state">The initial state.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.KeyboardStateBuilder.OverrideButtons(System.Collections.Generic.IDictionary{StardewModdingAPI.SButton,StardewModdingAPI.SButtonState})">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.KeyboardStateBuilder.GetPressedButtons">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.KeyboardStateBuilder.GetState">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Input.MouseStateBuilder">
            <summary>Manages mouse state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.MouseStateBuilder.State">
            <summary>The underlying mouse state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.MouseStateBuilder.ButtonStates">
            <summary>The current button states.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.MouseStateBuilder.ScrollWheelValue">
            <summary>The mouse wheel scroll value.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.MouseStateBuilder.X">
            <summary>The X cursor position.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.MouseStateBuilder.Y">
            <summary>The Y cursor position.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.MouseStateBuilder.#ctor(Microsoft.Xna.Framework.Input.MouseState)">
            <summary>Construct an instance.</summary>
            <param name="state">The initial state.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.MouseStateBuilder.OverrideButtons(System.Collections.Generic.IDictionary{StardewModdingAPI.SButton,StardewModdingAPI.SButtonState})">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.MouseStateBuilder.GetPressedButtons">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.MouseStateBuilder.GetState">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Input.SInputState">
            <summary>Manages the game's input state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.SInputState.CursorPositionImpl">
            <summary>The cursor position on the screen adjusted for the zoom level.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.SInputState.LastPlayerTile">
            <summary>The player's last known tile position.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.SInputState.CustomPressedKeys">
            <summary>The buttons to press until the game next handles input.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.SInputState.CustomReleasedKeys">
            <summary>The buttons to consider released until the actual button is released.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Input.SInputState.HasNewOverrides">
            <summary>Whether there are new overrides in <see cref="F:StardewModdingAPI.Framework.Input.SInputState.CustomPressedKeys"/> or <see cref="F:StardewModdingAPI.Framework.Input.SInputState.CustomReleasedKeys"/> that haven't been applied to the previous state.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.SInputState.ControllerState">
            <summary>The controller state as of the last update, with overrides applied.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.SInputState.KeyboardState">
            <summary>The keyboard state as of the last update, with overrides applied.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.SInputState.MouseState">
            <summary>The mouse state as of the last update, with overrides applied.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.SInputState.ButtonStates">
            <summary>The buttons which were pressed, held, or released as of the last update.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Input.SInputState.CursorPosition">
            <summary>The cursor position on the screen adjusted for the zoom level.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.Update">
            <summary>This method is called by the game, and does nothing since SMAPI will already have updated by that point.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.TrueUpdate">
            <summary>Update the current button states for the given tick.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.GetGamePadState">
            <summary>Get the gamepad state visible to the game.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.GetKeyboardState">
            <summary>Get the keyboard state visible to the game.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.GetMouseState">
            <summary>Get the keyboard state visible to the game.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.OverrideButton(StardewModdingAPI.SButton,System.Boolean)">
            <summary>Override the state for a button.</summary>
            <param name="button">The button to override.</param>
            <param name="setDown">Whether to mark it pressed; else mark it released.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.IsSuppressed(StardewModdingAPI.SButton)">
            <summary>Get whether a mod has indicated the key was already handled, so the game shouldn't handle it.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.ApplyOverrides">
            <summary>Apply input overrides to the current state.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.IsDown(StardewModdingAPI.SButton)">
            <summary>Get whether a given button was pressed or held.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.IsAnyDown(StardewValley.InputButton[])">
            <summary>Get whether any of the given buttons were pressed or held.</summary>
            <param name="buttons">The buttons to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.GetState(StardewModdingAPI.SButton)">
            <summary>Get the state of a button.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.GetCursorPosition(Microsoft.Xna.Framework.Input.MouseState,Microsoft.Xna.Framework.Vector2,System.Single)">
            <summary>Get the current cursor position.</summary>
            <param name="mouseState">The current mouse state.</param>
            <param name="absolutePixels">The absolute pixel position relative to the map, adjusted for pixel zoom.</param>
            <param name="zoomMultiplier">The multiplier applied to pixel coordinates to adjust them for pixel zoom.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.ApplyOverrides(System.Collections.Generic.ISet{StardewModdingAPI.SButton},System.Collections.Generic.ISet{StardewModdingAPI.SButton},StardewModdingAPI.Framework.Input.GamePadStateBuilder,StardewModdingAPI.Framework.Input.KeyboardStateBuilder,StardewModdingAPI.Framework.Input.MouseStateBuilder)">
            <summary>Apply input overrides to the given states.</summary>
            <param name="pressed">The buttons to mark pressed.</param>
            <param name="released">The buttons to mark released.</param>
            <param name="controller">The game's controller state for the current tick.</param>
            <param name="keyboard">The game's keyboard state for the current tick.</param>
            <param name="mouse">The game's mouse state for the current tick.</param>
            <returns>Returns whether any overrides were applied.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.DeriveStates(System.Collections.Generic.IDictionary{StardewModdingAPI.SButton,StardewModdingAPI.SButtonState},System.Collections.Generic.HashSet{StardewModdingAPI.SButton})">
            <summary>Get the state of all pressed or released buttons relative to their previous state.</summary>
            <param name="previousStates">The previous button states.</param>
            <param name="pressedButtons">The currently pressed buttons.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.DeriveState(StardewModdingAPI.SButtonState,System.Boolean)">
            <summary>Get the state of a button relative to its previous state.</summary>
            <param name="oldState">The previous button state.</param>
            <param name="isDown">Whether the button is currently down.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.GetState(System.Collections.Generic.IDictionary{StardewModdingAPI.SButton,StardewModdingAPI.SButtonState},StardewModdingAPI.SButton)">
            <summary>Get the state of a button.</summary>
            <param name="activeButtons">The current button states to check.</param>
            <param name="button">The button to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Input.SInputState.GetPressedButtons(StardewModdingAPI.Framework.Input.KeyboardStateBuilder,StardewModdingAPI.Framework.Input.MouseStateBuilder,StardewModdingAPI.Framework.Input.GamePadStateBuilder)">
            <summary>Get the buttons pressed in the given stats.</summary>
            <param name="keyboard">The keyboard state.</param>
            <param name="mouse">The mouse state.</param>
            <param name="controller">The controller state.</param>
            <remarks>Thumbstick direction logic derived from <see cref="T:StardewValley.ButtonCollection"/>.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.InternalExtensions">
            <summary>Provides extension methods for SMAPI's internal use.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.LogOnce(StardewModdingAPI.IMonitor,System.Collections.Generic.HashSet{System.String},System.String,StardewModdingAPI.LogLevel)">
            <summary>Log a message for the player or developer the first time it occurs.</summary>
            <param name="monitor">The monitor through which to log the message.</param>
            <param name="hash">The hash of logged messages.</param>
            <param name="message">The message to log.</param>
            <param name="level">The log severity level.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.LogAsMod(StardewModdingAPI.Framework.IModMetadata,System.String,StardewModdingAPI.LogLevel)">
            <summary>Log a message using the mod's monitor.</summary>
            <param name="metadata">The mod whose monitor to use.</param>
            <param name="message">The message to log.</param>
            <param name="level">The log severity level.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.LogAsModOnce(StardewModdingAPI.Framework.IModMetadata,System.String,StardewModdingAPI.LogLevel)">
            <summary>Log a message using the mod's monitor, but only if it hasn't already been logged since the last game launch.</summary>
            <param name="metadata">The mod whose monitor to use.</param>
            <param name="message">The message to log.</param>
            <param name="level">The log severity level.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.RaiseEmpty``1(StardewModdingAPI.Framework.Events.ManagedEvent{``0})">
            <summary>Raise the event using the default event args and notify all handlers.</summary>
            <typeparam name="TEventArgs">The event args type to construct.</typeparam>
            <param name="event">The event to raise.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.InReadLock(System.Threading.ReaderWriterLockSlim,System.Action)">
            <summary>Run code within a read lock.</summary>
            <param name="lock">The lock to set.</param>
            <param name="action">The action to perform.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.InReadLock``1(System.Threading.ReaderWriterLockSlim,System.Func{``0})">
            <summary>Run code within a read lock.</summary>
            <typeparam name="TReturn">The action's return value.</typeparam>
            <param name="lock">The lock to set.</param>
            <param name="action">The action to perform.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.InWriteLock(System.Threading.ReaderWriterLockSlim,System.Action)">
            <summary>Run code within a write lock.</summary>
            <param name="lock">The lock to set.</param>
            <param name="action">The action to perform.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.InWriteLock``1(System.Threading.ReaderWriterLockSlim,System.Func{``0})">
            <summary>Run code within a write lock.</summary>
            <typeparam name="TReturn">The action's return value.</typeparam>
            <param name="lock">The lock to set.</param>
            <param name="action">The action to perform.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.GetMenuChainLabel(StardewValley.Menus.IClickableMenu)">
            <summary>Get a string representation of the menu chain to the given menu (including the specified menu), in parent to child order.</summary>
            <param name="menu">The menu whose chain to get.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.IsOpen(Microsoft.Xna.Framework.Graphics.SpriteBatch,StardewModdingAPI.Framework.Reflection.Reflector)">
            <summary>Get whether the sprite batch is between a begin and end pair.</summary>
            <param name="spriteBatch">The sprite batch to check.</param>
            <param name="reflection">The reflection helper with which to access private fields.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.SetName(Microsoft.Xna.Framework.Graphics.Texture2D,StardewModdingAPI.IAssetName)">
            <summary>Set the texture name field.</summary>
            <param name="texture">The texture whose name to set.</param>
            <param name="assetName">The asset name to set.</param>
            <returns>Returns the texture for chaining.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.InternalExtensions.SetName(Microsoft.Xna.Framework.Graphics.Texture2D,System.String)">
            <summary>Set the texture name field.</summary>
            <param name="texture">The texture whose name to set.</param>
            <param name="assetName">The asset name to set.</param>
            <returns>Returns the texture for chaining.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.Logging.LogFileManager">
            <summary>Manages reading and writing to log file.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Logging.LogFileManager.Stream">
            <summary>The underlying stream writer.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Logging.LogFileManager.Path">
            <summary>The full path to the log file being written.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogFileManager.#ctor(System.String)">
            <summary>Construct an instance.</summary>
            <param name="path">The log file to write.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogFileManager.WriteLine(System.String)">
            <summary>Write a message to the log.</summary>
            <param name="message">The message to log.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogFileManager.Dispose">
            <summary>Release all resources.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Logging.LogManager">
            <summary>Manages the SMAPI console window and log file.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Logging.LogManager.LogFile">
            <summary>The log file to which to write messages.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Logging.LogManager.GetMonitorImpl">
            <summary>Create a monitor instance given the ID and name.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Logging.LogManager.Monitor">
            <summary>The core logger and monitor for SMAPI.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Logging.LogManager.MonitorForGame">
            <summary>The core logger and monitor on behalf of the game.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.#ctor(System.String,StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig,System.Boolean,System.Collections.Generic.HashSet{System.String},System.Boolean,System.Func{System.Nullable{System.Int32}})">
            <summary>Construct an instance.</summary>
            <param name="logPath">The log file path to write.</param>
            <param name="colorConfig">The colors to use for text written to the SMAPI console.</param>
            <param name="writeToConsole">Whether to output log messages to the console.</param>
            <param name="verboseLogging">The log contexts for which to enable verbose logging, which may show a lot more information to simplify troubleshooting.</param>
            <param name="isDeveloperMode">Whether to enable full console output for developers.</param>
            <param name="getScreenIdForLog">Get the screen ID that should be logged to distinguish between players in split-screen mode, if any.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.GetMonitor(System.String,System.String)">
            <summary>Get a monitor instance derived from SMAPI's current settings.</summary>
            <param name="id">The unique ID for the mod context.</param>
            <param name="name">The name of the module which will log messages with this instance.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.SetConsoleTitle(System.String)">
            <summary>Set the title of the SMAPI console window.</summary>
            <param name="title">The new window title.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.RunConsoleInputLoop(StardewModdingAPI.Framework.CommandManager,System.Action,System.Action{System.String},System.Func{System.Boolean})">
            <summary>Run a loop handling console input.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.PressAnyKeyToExit">
            <summary>Show a 'press any key to exit' message, and exit when they press a key.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.PressAnyKeyToExit(System.Boolean)">
            <summary>Show a 'press any key to exit' message, and exit when they press a key.</summary>
            <param name="showMessage">Whether to print a 'press any key to exit' message to the console.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.WriteCrashLog">
            <summary>Create a crash marker and duplicate the log into the crash log.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.WriteUpdateMarker(System.String,System.String)">
            <summary>Write an update alert marker file.</summary>
            <param name="version">The new version found.</param>
            <param name="url">The download URL for the update.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.HandleMarkerFiles">
            <summary>Check whether SMAPI crashed or detected an update during the last session, and display them in the SMAPI console.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.LogFatalLaunchError(System.Exception)">
            <summary>Log a fatal exception which prevents SMAPI from launching.</summary>
            <param name="exception">The exception details.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.LogIntro(System.String,System.Collections.Generic.IDictionary{System.String,System.Object})">
            <summary>Log the initial header with general SMAPI and system details.</summary>
            <param name="modsPath">The path from which mods will be loaded.</param>
            <param name="customSettings">The custom SMAPI settings.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.LogSettingsHeader(StardewModdingAPI.Framework.Models.SConfig)">
            <summary>Log details for settings that don't match the default.</summary>
            <param name="settings">The settings to log.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.LogModInfo(StardewModdingAPI.Framework.IModMetadata[],StardewModdingAPI.Framework.IModMetadata[],StardewModdingAPI.Framework.IModMetadata[],StardewModdingAPI.Framework.IModMetadata[],System.Boolean,System.Boolean,System.Boolean)">
            <summary>Log info about loaded mods.</summary>
            <param name="loaded">The full list of loaded content packs and mods.</param>
            <param name="loadedContentPacks">The loaded content packs.</param>
            <param name="loadedMods">The loaded mods.</param>
            <param name="skippedMods">The mods which could not be loaded.</param>
            <param name="logParanoidWarnings">Whether to log issues for mods which directly use potentially sensitive .NET APIs like file or shell access.</param>
            <param name="logTechnicalDetailsForBrokenMods">Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</param>
            <param name="hasHarmonyFix">Whether Harmony was fixed to work with Stardew Valley.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.LogModWarnings(System.Collections.Generic.IEnumerable{StardewModdingAPI.Framework.IModMetadata},StardewModdingAPI.Framework.IModMetadata[],System.Boolean,System.Boolean,System.Boolean)">
            <summary>Write a summary of mod warnings to the console and log.</summary>
            <param name="mods">The loaded mods.</param>
            <param name="skippedMods">The mods which could not be loaded.</param>
            <param name="logParanoidWarnings">Whether to log issues for mods which directly use potentially sensitive .NET APIs like file or shell access.</param>
            <param name="logTechnicalDetailsForBrokenMods">Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</param>
            <param name="hasHarmonyFix">Whether Harmony was fixed to work with Stardew Valley.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.GroupFailedModsByPriority(System.Collections.Generic.IList{StardewModdingAPI.Framework.IModMetadata})">
            <summary>Group failed mods by the priority players should update them, where mods in earlier groups are more likely to fix multiple mods.</summary>
            <param name="failedMods">The failed mods to group.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.FilterThrough``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IList{``0},System.Func{``0,System.Boolean})">
            <summary>Filter matching items from one list and add them to the other.</summary>
            <typeparam name="TItem">The list item type.</typeparam>
            <param name="fromList">The list to filter.</param>
            <param name="toList">The list to which to add filtered items.</param>
            <param name="match">Matches items to filter through.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.LogModWarningGroup(StardewModdingAPI.Framework.IModMetadata[],System.Func{StardewModdingAPI.Framework.IModMetadata,System.Boolean},StardewModdingAPI.LogLevel,System.String,System.String[],System.Func{StardewModdingAPI.Framework.IModMetadata,System.String})">
            <summary>Write a mod warning group to the console and log.</summary>
            <param name="mods">The mods to search.</param>
            <param name="match">Matches mods to include in the warning group.</param>
            <param name="level">The log level for the logged messages.</param>
            <param name="heading">A brief heading label for the group.</param>
            <param name="blurb">A detailed explanation of the warning, split into lines.</param>
            <param name="modLabel">Formats the mod label, or <c>null</c> to use the <see cref="P:StardewModdingAPI.Framework.IModMetadata.DisplayName"/>.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogManager.LogModWarningGroup(StardewModdingAPI.Framework.IModMetadata[],StardewModdingAPI.Toolkit.Framework.ModData.ModWarning,StardewModdingAPI.LogLevel,System.String,System.String[])">
            <summary>Write a mod warning group to the console and log.</summary>
            <param name="mods">The mods to search.</param>
            <param name="warning">The mod warning to match.</param>
            <param name="level">The log level for the logged messages.</param>
            <param name="heading">A brief heading label for the group.</param>
            <param name="blurb">A detailed explanation of the warning, split into lines.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Logging.LogOnceCacheKey">
            <summary>The cache key for the <see cref="F:StardewModdingAPI.Framework.Monitor.LogOnceCache"/>.</summary>
            <param name="Message">The log message.</param>
            <param name="Level">The log level.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.LogOnceCacheKey.#ctor(System.String,StardewModdingAPI.LogLevel)">
            <summary>The cache key for the <see cref="F:StardewModdingAPI.Framework.Monitor.LogOnceCache"/>.</summary>
            <param name="Message">The log message.</param>
            <param name="Level">The log level.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.Logging.LogOnceCacheKey.Message">
            <summary>The log message.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Logging.LogOnceCacheKey.Level">
            <summary>The log level.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Logging.VerboseLogStringHandler">
            <summary>An interpolated string handler to handle verbose logging.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Logging.VerboseLogStringHandler.Handler">
            <summary>The underlying interpolated string handler.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.VerboseLogStringHandler.#ctor(System.Int32,System.Int32,StardewModdingAPI.IMonitor,System.Boolean@)">
            <summary>Construct an instance.</summary>
            <param name="literalLength">The total length of literals used in interpolation.</param>
            <param name="formattedCount">The number of interpolation holes to fill.</param>
            <param name="monitor">The monitor instance.</param>
            <param name="isValid">Whether the handler can receive and output data.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.VerboseLogStringHandler.AppendLiteral(System.String)">
            <inheritdoc cref="M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendLiteral(System.String)"/>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.VerboseLogStringHandler.AppendFormatted``1(``0)">
            <inheritdoc cref="M:System.Runtime.CompilerServices.DefaultInterpolatedStringHandler.AppendFormatted``1(``0)"/>
        </member>
        <member name="M:StardewModdingAPI.Framework.Logging.VerboseLogStringHandler.ToString">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Models.SConfig">
            <summary>The SMAPI configuration settings.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Models.SConfig.DefaultValues">
            <summary>The default config values, for fields that should be logged if different.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Models.SConfig.DefaultSuppressUpdateChecks">
            <summary>The default values for <see cref="P:StardewModdingAPI.Framework.Models.SConfig.SuppressUpdateChecks"/>, to log changes if different.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.DeveloperMode">
            <summary>Whether to enable development features.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.CheckForUpdates">
            <summary>Whether to check for newer versions of SMAPI and mods on startup.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.ListenForConsoleInput">
            <summary>Whether SMAPI should listen for console input to support console commands.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.ParanoidWarnings">
            <summary>Whether to add a section to the 'mod issues' list for mods which which directly use potentially sensitive .NET APIs like file or shell access.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.UseBetaChannel">
            <summary>Whether to show beta versions as valid updates.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.GitHubProjectName">
            <summary>SMAPI's GitHub project name, used to perform update checks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.WebApiBaseUrl">
            <summary>The base URL for SMAPI's web API, used to perform update checks.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.VerboseLogging">
            <summary>The log contexts for which to enable verbose logging, which may show a lot more information to simplify troubleshooting.</summary>
            <remarks>The possible values are "*" (everything is verbose), "SMAPI", (SMAPI itself), or mod IDs.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.RewriteMods">
            <summary>Whether SMAPI should rewrite mods for compatibility.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.FixHarmony">
            <summary>Whether to apply fixes to Harmony so it works with Stardew Valley.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.UseCaseInsensitivePaths">
            <summary>Whether to make SMAPI file APIs case-insensitive, even on Linux.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.LogNetworkTraffic">
            <summary>Whether SMAPI should log network traffic. Best combined with <see cref="P:StardewModdingAPI.Framework.Models.SConfig.VerboseLogging"/>, which includes network metadata.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.LogTechnicalDetailsForBrokenMods">
            <summary>Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.ConsoleColors">
            <summary>The colors to use for text written to the SMAPI console.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.SuppressHarmonyDebugMode">
            <summary>Whether to prevent mods from enabling Harmony's debug mode, which impacts performance and creates a file on your desktop. Debug mode should never be enabled by a released mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.SuppressUpdateChecks">
            <summary>The mod IDs SMAPI should ignore when performing update checks or validating update keys.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.ModsToLoadEarly">
            <summary>The mod IDs SMAPI should load before any other mods (except those needed to load them).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Models.SConfig.ModsToLoadLate">
            <summary>The mod IDs SMAPI should load after any other mods.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Models.SConfig.#ctor(System.Boolean,System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.String,System.String,System.String[],System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},System.Nullable{System.Boolean},StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig,System.Nullable{System.Boolean},System.String[],System.String[],System.String[])">
            <summary>Construct an instance.</summary>
            <param name="developerMode"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.DeveloperMode" path="/summary" /></param>
            <param name="checkForUpdates"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.CheckForUpdates" path="/summary" /></param>
            <param name="listenForConsoleInput"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.ListenForConsoleInput" path="/summary" /></param>
            <param name="paranoidWarnings"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.ParanoidWarnings" path="/summary" /></param>
            <param name="useBetaChannel"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.UseBetaChannel" path="/summary" /></param>
            <param name="gitHubProjectName"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.GitHubProjectName" path="/summary" /></param>
            <param name="webApiBaseUrl"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.WebApiBaseUrl" path="/summary" /></param>
            <param name="verboseLogging"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.VerboseLogging" path="/summary" /></param>
            <param name="rewriteMods"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.RewriteMods" path="/summary" /></param>
            <param name="fixHarmony"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.FixHarmony" path="/summary" /></param>
            <param name="useCaseInsensitivePaths"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.UseCaseInsensitivePaths" path="/summary" /></param>
            <param name="logNetworkTraffic"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.LogNetworkTraffic" path="/summary" /></param>
            <param name="logTechnicalDetailsForBrokenMods"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.LogTechnicalDetailsForBrokenMods" path="/summary" /></param>
            <param name="consoleColors"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.ConsoleColors" path="/summary" /></param>
            <param name="suppressHarmonyDebugMode"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.SuppressHarmonyDebugMode" path="/summary" /></param>
            <param name="suppressUpdateChecks"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.SuppressUpdateChecks" path="/summary" /></param>
            <param name="modsToLoadEarly"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.ModsToLoadEarly" path="/summary" /></param>
            <param name="modsToLoadLate"><inheritdoc cref="P:StardewModdingAPI.Framework.Models.SConfig.ModsToLoadLate" path="/summary" /></param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Models.SConfig.OverrideDeveloperMode(System.Boolean)">
            <summary>Override the value of <see cref="P:StardewModdingAPI.Framework.Models.SConfig.DeveloperMode"/>.</summary>
            <param name="value">The value to set.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Models.SConfig.GetCustomSettings">
            <summary>Get the settings which have been customized by the player.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.BaseHelper">
            <summary>The common base class for mod helpers.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.BaseHelper.Mod">
            <summary>The mod using this instance.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.BaseHelper.ModID">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.BaseHelper.#ctor(StardewModdingAPI.Framework.IModMetadata)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.CommandHelper">
            <summary>Provides an API for managing console commands.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.CommandHelper.CommandManager">
            <summary>Manages console commands.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.CommandHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.CommandManager)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="commandManager">Manages console commands.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.CommandHelper.Add(System.String,System.String,System.Action{System.String,System.String[]})">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.ContentPackHelper">
            <summary>Provides an API for managing content packs.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ContentPackHelper.ContentPacks">
            <summary>The content packs loaded for this mod.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ContentPackHelper.CreateContentPack">
            <summary>Create a temporary content pack.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ContentPackHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,System.Lazy{StardewModdingAPI.IContentPack[]},System.Func{System.String,StardewModdingAPI.IManifest,StardewModdingAPI.IContentPack})">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="contentPacks">The content packs loaded for this mod.</param>
            <param name="createContentPack">Create a temporary content pack.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ContentPackHelper.GetOwned">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ContentPackHelper.CreateFake(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ContentPackHelper.CreateTemporary(System.String,System.String,System.String,System.String,System.String,StardewModdingAPI.ISemanticVersion)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.DataHelper">
            <summary>Provides an API for reading and storing local mod data.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.DataHelper.JsonHelper">
            <summary>Encapsulates SMAPI's JSON file parsing.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.DataHelper.ModFolderPath">
            <summary>The absolute path to the mod folder.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,System.String,StardewModdingAPI.Toolkit.Serialization.JsonHelper)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="modFolderPath">The absolute path to the mod folder.</param>
            <param name="jsonHelper">The absolute path to the mod folder.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.ReadJsonFile``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.WriteJsonFile``1(System.String,``0)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.ReadSaveData``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.WriteSaveData``1(System.String,``0)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.ReadGlobalData``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.WriteGlobalData``1(System.String,``0)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.GetSaveFileKey(System.String)">
            <summary>Get the unique key for a save file data entry.</summary>
            <param name="key">The unique key identifying the data.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.GetDataFields(StardewModdingAPI.Enums.LoadStage)">
            <summary>Get the data fields to read/write for save data.</summary>
            <param name="stage">The current load stage.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.GetGlobalDataPath(System.String)">
            <summary>Get the absolute path for a global data file.</summary>
            <param name="key">The unique key identifying the data.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.DataHelper.AssertSlug(System.String,System.String)">
            <summary>Assert that a key contains only characters that are safe in all contexts.</summary>
            <param name="key">The key to check.</param>
            <param name="paramName">The argument name for any assertion error.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.GameContentHelper">
            <inheritdoc cref="T:StardewModdingAPI.IGameContentHelper"/>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.ContentCore">
            <summary>SMAPI's core content logic.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.GameContentManager">
            <summary>The underlying game content manager.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.ModName">
            <summary>The friendly mod name for use in errors.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.Monitor">
            <summary>Encapsulates monitoring and logging.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.Reflection">
            <summary>Simplifies access to private code.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.CurrentLocale">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.CurrentLocaleConstant">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.#ctor(StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.Framework.IModMetadata,System.String,StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.Reflection.Reflector)">
            <summary>Construct an instance.</summary>
            <param name="contentCore">SMAPI's core content logic.</param>
            <param name="mod">The mod using this instance.</param>
            <param name="modName">The friendly mod name for use in errors.</param>
            <param name="monitor">Encapsulates monitoring and logging.</param>
            <param name="reflection">Simplifies access to private code.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.ParseAssetName(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.Load``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.Load``1(StardewModdingAPI.IAssetName)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.InvalidateCache(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.InvalidateCache(StardewModdingAPI.IAssetName)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.InvalidateCache``1">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.InvalidateCache(System.Func{StardewModdingAPI.IAssetInfo,System.Boolean})">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.GetPatchHelper``1(``0,System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.GameContentHelper.GetUnderlyingContentManager">
            <summary>Get the underlying game content manager.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.InputHelper">
            <summary>Provides an API for checking and changing input state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.InputHelper.CurrentInputState">
            <summary>Manages the game's input state for the current player instance. That may not be the main player in split-screen mode.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.InputHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,System.Func{StardewModdingAPI.Framework.Input.SInputState})">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="currentInputState">Manages the game's input state for the current player instance. That may not be the main player in split-screen mode.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.InputHelper.GetCursorPosition">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.InputHelper.IsDown(StardewModdingAPI.SButton)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.InputHelper.IsSuppressed(StardewModdingAPI.SButton)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.InputHelper.Suppress(StardewModdingAPI.SButton)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.InputHelper.SuppressActiveKeybinds(StardewModdingAPI.Utilities.KeybindList)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.InputHelper.GetState(StardewModdingAPI.SButton)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.ModContentHelper">
            <inheritdoc cref="T:StardewModdingAPI.IModContentHelper"/>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.ContentCore">
            <summary>SMAPI's core content logic.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.ModContentManager">
            <summary>A content manager for this mod which manages files from the mod's folder.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.ModName">
            <summary>The friendly mod name for use in errors.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.Reflection">
            <summary>Simplifies access to private code.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.#ctor(StardewModdingAPI.Framework.ContentCoordinator,System.String,StardewModdingAPI.Framework.IModMetadata,System.String,StardewModdingAPI.Framework.ContentManagers.IContentManager,StardewModdingAPI.Framework.Reflection.Reflector)">
            <summary>Construct an instance.</summary>
            <param name="contentCore">SMAPI's core content logic.</param>
            <param name="modFolderPath">The absolute path to the mod folder.</param>
            <param name="mod">The mod using this instance.</param>
            <param name="modName">The friendly mod name for use in errors.</param>
            <param name="gameContentManager">The game content manager used for map tilesheets not provided by the mod.</param>
            <param name="reflection">Simplifies access to private code.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.Load``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.GetInternalAssetName(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModContentHelper.GetPatchHelper``1(``0,System.String)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.ModHelper">
            <summary>Provides simplified APIs for writing mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.DirectoryPath">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.Events">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.GameContent">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.ModContent">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.ContentPacks">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.Data">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.Input">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.Reflection">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.ModRegistry">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.ConsoleCommands">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.Multiplayer">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.ModHelper.Translation">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,System.String,System.Func{StardewModdingAPI.Framework.Input.SInputState},StardewModdingAPI.Events.IModEvents,StardewModdingAPI.IGameContentHelper,StardewModdingAPI.IModContentHelper,StardewModdingAPI.IContentPackHelper,StardewModdingAPI.ICommandHelper,StardewModdingAPI.IDataHelper,StardewModdingAPI.IModRegistry,StardewModdingAPI.IReflectionHelper,StardewModdingAPI.IMultiplayerHelper,StardewModdingAPI.ITranslationHelper)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="modDirectory">The full path to the mod's folder.</param>
            <param name="currentInputState">Manages the game's input state for the current player instance. That may not be the main player in split-screen mode.</param>
            <param name="events">Manages access to events raised by SMAPI.</param>
            <param name="gameContentHelper">An API for loading content assets from the game's <c>Content</c> folder or via <see cref="P:StardewModdingAPI.Events.IModEvents.Content"/>.</param>
            <param name="modContentHelper">An API for loading content assets from your mod's files.</param>
            <param name="contentPackHelper">An API for managing content packs.</param>
            <param name="commandHelper">An API for managing console commands.</param>
            <param name="dataHelper">An API for reading and writing persistent mod data.</param>
            <param name="modRegistry">an API for fetching metadata about loaded mods.</param>
            <param name="reflectionHelper">An API for accessing private game code.</param>
            <param name="multiplayer">Provides multiplayer utilities.</param>
            <param name="translationHelper">An API for reading translations stored in the mod's <c>i18n</c> folder.</param>
            <exception cref="T:System.ArgumentNullException">An argument is null or empty.</exception>
            <exception cref="T:System.InvalidOperationException">The <paramref name="modDirectory"/> path does not exist on disk.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModHelper.ReadConfig``1">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModHelper.WriteConfig``1(``0)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModHelper.Dispose">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper">
            <summary>Provides metadata about installed mods.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.Registry">
            <summary>The underlying mod registry.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.Monitor">
            <summary>Encapsulates monitoring and logging for the mod.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.AccessedModApis">
            <summary>The APIs accessed by this instance.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.ProxyFactory">
            <summary>Generates proxy classes to access mod APIs through an arbitrary interface.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.ModRegistry,StardewModdingAPI.Framework.Reflection.IInterfaceProxyFactory,StardewModdingAPI.IMonitor)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="registry">The underlying mod registry.</param>
            <param name="proxyFactory">Generates proxy classes to access mod APIs through an arbitrary interface.</param>
            <param name="monitor">Encapsulates monitoring and logging for the mod.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.GetAll">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.Get(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.IsLoaded(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.GetApi(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ModRegistryHelper.GetApi``1(System.String)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper">
            <summary>Provides multiplayer utilities.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper.Multiplayer">
            <summary>SMAPI's core multiplayer utility.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.SMultiplayer)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="multiplayer">SMAPI's core multiplayer utility.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper.GetNewID">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper.GetActiveLocations">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper.GetConnectedPlayer(System.Int64)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper.GetConnectedPlayers">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.MultiplayerHelper.SendMessage``1(``0,System.String,System.String[],System.Int64[])">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper">
            <summary>Provides helper methods for accessing private game code.</summary>
            <remarks>This implementation searches up the type hierarchy, and caches the reflected fields and methods with a sliding expiry (to optimize performance without unnecessary memory usage).</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.Reflector">
            <summary>The underlying reflection helper.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.ModName">
            <summary>The mod name for error messages.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,System.String,StardewModdingAPI.Framework.Reflection.Reflector)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="modName">The mod name for error messages.</param>
            <param name="reflector">The underlying reflection helper.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.GetField``1(System.Object,System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.GetField``1(System.Type,System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.GetProperty``1(System.Object,System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.GetProperty``1(System.Type,System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.GetMethod(System.Object,System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.GetMethod(System.Type,System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.AssertAccessAllowed``1(StardewModdingAPI.IReflectedField{``0})">
            <summary>Assert that mods can use the reflection helper to access the given member.</summary>
            <typeparam name="T">The field value type.</typeparam>
            <param name="field">The field being accessed.</param>
            <returns>Returns the same field instance for convenience.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.AssertAccessAllowed``1(StardewModdingAPI.IReflectedProperty{``0})">
            <summary>Assert that mods can use the reflection helper to access the given member.</summary>
            <typeparam name="T">The property value type.</typeparam>
            <param name="property">The property being accessed.</param>
            <returns>Returns the same property instance for convenience.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.AssertAccessAllowed(StardewModdingAPI.IReflectedMethod)">
            <summary>Assert that mods can use the reflection helper to access the given member.</summary>
            <param name="method">The method being accessed.</param>
            <returns>Returns the same method instance for convenience.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.ReflectionHelper.AssertAccessAllowed(System.Reflection.MemberInfo)">
            <summary>Assert that mods can use the reflection helper to access the given member.</summary>
            <param name="member">The member being accessed.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModHelpers.TranslationHelper">
            <summary>Provides translations stored in the mod's <c>i18n</c> folder, with one file per locale (like <c>en.json</c>) containing a flat key => value structure. Translations are fetched with locale fallback, so missing translations are filled in from broader locales (like <c>pt-BR.json</c> &lt; <c>pt.json</c> &lt; <c>default.json</c>).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.Translator">
            <summary>The underlying translation manager.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.Locale">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.LocaleEnum">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.#ctor(StardewModdingAPI.Framework.IModMetadata,System.String,StardewValley.LocalizedContentManager.LanguageCode)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod using this instance.</param>
            <param name="locale">The initial locale.</param>
            <param name="languageCode">The game's current language code.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.GetTranslations">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.Get(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.Get(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.GetInAllLocales(System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.SetTranslations(System.Collections.Generic.IDictionary{System.String,System.Collections.Generic.IDictionary{System.String,System.String}})">
            <summary>Set the translations to use.</summary>
            <param name="translations">The translations to use.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModHelpers.TranslationHelper.SetLocale(System.String,StardewValley.LocalizedContentManager.LanguageCode)">
            <summary>Set the current locale and pre-cache translations.</summary>
            <param name="locale">The current locale.</param>
            <param name="localeEnum">The game's current language code.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLinked`1">
            <summary>A generic tuple which links something to a mod.</summary>
            <typeparam name="T">The interceptor type.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLinked`1.Mod">
            <summary>The mod metadata.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLinked`1.Data">
            <summary>The instance linked to the mod.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLinked`1.#ctor(StardewModdingAPI.Framework.IModMetadata,`0)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod metadata.</param>
            <param name="data">The instance linked to the mod.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver">
            <summary>A minimal assembly definition resolver which resolves references to known assemblies.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.Resolver">
            <summary>The underlying assembly resolver.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.Lookup">
            <summary>The known assemblies.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.SearchPaths">
            <summary>The directory paths to search for assemblies.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.Add(Mono.Cecil.AssemblyDefinition[])">
            <summary>Add known assemblies to the resolver.</summary>
            <param name="assemblies">The known assemblies.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.AddWithExplicitNames(Mono.Cecil.AssemblyDefinition,System.String[])">
            <summary>Add a known assembly to the resolver with the given names. This overrides the assembly names that would normally be assigned.</summary>
            <param name="assembly">The assembly to add.</param>
            <param name="names">The assembly names for which it should be returned.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.Resolve(Mono.Cecil.AssemblyNameReference)">
            <summary>Resolve an assembly reference.</summary>
            <param name="name">The assembly name.</param>
            <exception cref="T:Mono.Cecil.AssemblyResolutionException">The assembly can't be resolved.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.Resolve(Mono.Cecil.AssemblyNameReference,Mono.Cecil.ReaderParameters)">
            <summary>Resolve an assembly reference.</summary>
            <param name="name">The assembly name.</param>
            <param name="parameters">The assembly reader parameters.</param>
            <exception cref="T:Mono.Cecil.AssemblyResolutionException">The assembly can't be resolved.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.TryAddSearchDirectory(System.String)">
            <summary>Add a directory path to search for assemblies, if it's non-null and not already added.</summary>
            <param name="path">The path to search.</param>
            <returns>Returns whether the path was successfully added.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.RemoveSearchDirectory(System.String)">
            <summary>Remove a directory path to search for assemblies, if it's non-null.</summary>
            <param name="path">The path to remove.</param>
            <returns>Returns whether the path was in the list and removed.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.ResolveName(System.String)">
            <summary>Resolve a known assembly definition based on its short or full name.</summary>
            <param name="name">The assembly's short or full name.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.DefaultAssemblyResolverWrapper">
            <summary>An internal wrapper around <see cref="T:Mono.Cecil.DefaultAssemblyResolver"/> to allow access to its protected methods.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyDefinitionResolver.DefaultAssemblyResolverWrapper.AddAssembly(Mono.Cecil.AssemblyDefinition)">
            <summary>Add an assembly to the resolver.</summary>
            <param name="assembly">The assembly to add.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.AssemblyLoader">
            <summary>Preprocesses and loads mod assemblies.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.Monitor">
            <summary>Encapsulates monitoring and logging.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.AssemblyMap">
            <summary>Metadata for mapping assemblies to the current platform.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.TypeAssemblies">
            <summary>A type => assembly lookup for types which should be rewritten.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.AssemblyDefinitionResolver">
            <summary>A minimal assembly definition resolver which resolves references to known loaded assemblies.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.SymbolReaderProvider">
            <summary>Provides assembly symbol readers for Mono.Cecil.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.SymbolWriterProvider">
            <summary>Provides assembly symbol writers for Mono.Cecil.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.Disposables">
            <summary>The objects to dispose as part of this instance.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.InstructionHandlers">
            <summary>The instruction finders and rewriters to apply.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.RewriteMods">
            <summary>Whether to rewrite mods for compatibility.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.LogTechnicalDetailsForBrokenMods">
            <summary>Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.#ctor(StardewModdingAPI.Toolkit.Utilities.Platform,StardewModdingAPI.IMonitor,System.Boolean,System.Boolean,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="targetPlatform">The current game platform.</param>
            <param name="monitor">Encapsulates monitoring and logging.</param>
            <param name="paranoidMode">Whether to detect paranoid mode issues.</param>
            <param name="rewriteMods">Whether to rewrite mods for compatibility.</param>
            <param name="logTechnicalDetailsForBrokenMods">Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.Load(StardewModdingAPI.Framework.IModMetadata,System.IO.FileInfo,System.Boolean)">
            <summary>Preprocess and load an assembly.</summary>
            <param name="mod">The mod for which the assembly is being loaded.</param>
            <param name="assemblyFile">The assembly file.</param>
            <param name="assumeCompatible">Assume the mod is compatible, even if incompatible code is detected.</param>
            <returns>Returns the rewrite metadata for the preprocessed assembly.</returns>
            <exception cref="T:StardewModdingAPI.Framework.ModLoading.IncompatibleInstructionException">An incompatible CIL instruction was found while rewriting the assembly.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.IsAssemblyLoaded(Mono.Cecil.AssemblyNameReference)">
            <summary>Get whether an assembly is loaded.</summary>
            <param name="reference">The assembly name reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.ResolveAssembly(System.String)">
            <summary>Resolve an assembly by its name.</summary>
            <param name="name">The assembly name.</param>
            <remarks>
            This implementation returns the first loaded assembly which matches the short form of
            the assembly name, to resolve assembly resolution issues when rewriting
            assemblies (especially with Mono). Since this is meant to be called on <see cref="E:System.AppDomain.AssemblyResolve"/>,
            the implicit assumption is that loading the exact assembly failed.
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.Dispose">
            <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.TrackForDisposal``1(``0)">
            <summary>Track an object for disposal as part of the assembly loader.</summary>
            <typeparam name="T">The instance type.</typeparam>
            <param name="instance">The disposable instance.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.GetReferencedLocalAssemblies(System.IO.FileInfo,System.Collections.Generic.HashSet{System.String},Mono.Cecil.IAssemblyResolver)">
            <summary>Get a list of referenced local assemblies starting from the mod assembly, ordered from leaf to root.</summary>
            <param name="file">The assembly file to load.</param>
            <param name="visitedAssemblyNames">The assembly names that should be skipped.</param>
            <param name="assemblyResolver">A resolver which resolves references to known assemblies.</param>
            <returns>Returns the rewrite metadata for the preprocessed assembly.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.RewriteAssembly(StardewModdingAPI.Framework.IModMetadata,Mono.Cecil.AssemblyDefinition,System.Collections.Generic.HashSet{System.String},System.String)">
            <summary>Rewrite the types referenced by an assembly.</summary>
            <param name="mod">The mod for which the assembly is being loaded.</param>
            <param name="assembly">The assembly to rewrite.</param>
            <param name="loggedMessages">The messages that have already been logged for this mod.</param>
            <param name="logPrefix">A string to prefix to log messages.</param>
            <returns>Returns whether the assembly was modified.</returns>
            <exception cref="T:StardewModdingAPI.Framework.ModLoading.IncompatibleInstructionException">An incompatible CIL instruction was found while rewriting the assembly.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.ProcessInstructionHandleResult(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.ModLoading.IInstructionHandler,StardewModdingAPI.Framework.ModLoading.InstructionHandleResult,System.Collections.Generic.HashSet{System.String},System.String,System.String)">
            <summary>Process the result from an instruction handler.</summary>
            <param name="mod">The mod being analyzed.</param>
            <param name="handler">The instruction handler.</param>
            <param name="result">The result returned by the handler.</param>
            <param name="loggedMessages">The messages already logged for the current mod.</param>
            <param name="logPrefix">A string to prefix to log messages.</param>
            <param name="filename">The assembly filename for log messages.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyLoader.ChangeTypeScope(Mono.Cecil.TypeReference)">
            <summary>Get the correct reference to use for compatibility with the current platform.</summary>
            <param name="type">The type reference to rewrite.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.AssemblyLoadStatus">
            <summary>Indicates the result of an assembly load.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoadStatus.Okay">
            <summary>The assembly was loaded successfully.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoadStatus.Failed">
            <summary>The assembly could not be loaded.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoadStatus.AlreadyLoaded">
            <summary>The assembly is already loaded.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult">
            <summary>Metadata about a parsed assembly definition.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult.File">
            <summary>The original assembly file.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult.Definition">
            <summary>The assembly definition.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult.Status">
            <summary>The result of the assembly load.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult.HasDefinition">
            <summary>Whether the <see cref="F:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult.Definition"/> is loaded and ready (i.e. the <see cref="F:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult.Status"/> is not <see cref="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoadStatus.AlreadyLoaded"/> or <see cref="F:StardewModdingAPI.Framework.ModLoading.AssemblyLoadStatus.Failed"/>).</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.AssemblyParseResult.#ctor(System.IO.FileInfo,Mono.Cecil.AssemblyDefinition,StardewModdingAPI.Framework.ModLoading.AssemblyLoadStatus)">
            <summary>Construct an instance.</summary>
            <param name="file">The original assembly file.</param>
            <param name="assembly">The assembly definition.</param>
            <param name="status">The result of the assembly load.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Finders.EventFinder">
            <summary>Finds incompatible CIL instructions that reference a given event.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.EventFinder.FullTypeName">
            <summary>The full type name for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.EventFinder.MethodNames">
            <summary>The method names for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.EventFinder.Result">
            <summary>The result to return for matching instructions.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.EventFinder.#ctor(System.String,System.String[],StardewModdingAPI.Framework.ModLoading.InstructionHandleResult)">
            <summary>Construct an instance.</summary>
            <param name="fullTypeName">The full type name for which to find references.</param>
            <param name="eventNames">The event names for which to find references.</param>
            <param name="result">The result to return for matching instructions.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.EventFinder.#ctor(System.String,System.String,StardewModdingAPI.Framework.ModLoading.InstructionHandleResult)">
            <summary>Construct an instance.</summary>
            <param name="fullTypeName">The full type name for which to find references.</param>
            <param name="eventName">The event name for which to find references.</param>
            <param name="result">The result to return for matching instructions.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.EventFinder.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Finders.FieldFinder">
            <summary>Finds incompatible CIL instructions that reference a given field.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.FieldFinder.FullTypeName">
            <summary>The full type name for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.FieldFinder.FieldNames">
            <summary>The field names for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.FieldFinder.Result">
            <summary>The result to return for matching instructions.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.FieldFinder.#ctor(System.String,System.String[],StardewModdingAPI.Framework.ModLoading.InstructionHandleResult)">
            <summary>Construct an instance.</summary>
            <param name="fullTypeName">The full type name for which to find references.</param>
            <param name="fieldNames">The field names for which to find references.</param>
            <param name="result">The result to return for matching instructions.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.FieldFinder.#ctor(System.String,System.String,StardewModdingAPI.Framework.ModLoading.InstructionHandleResult)">
            <summary>Construct an instance.</summary>
            <param name="fullTypeName">The full type name for which to find references.</param>
            <param name="fieldName">The field name for which to find references.</param>
            <param name="result">The result to return for matching instructions.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.FieldFinder.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Finders.MethodFinder">
            <summary>Finds incompatible CIL instructions that reference a given method.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.MethodFinder.FullTypeName">
            <summary>The full type name for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.MethodFinder.MethodName">
            <summary>The method name for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.MethodFinder.Result">
            <summary>The result to return for matching instructions.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.MethodFinder.#ctor(System.String,System.String,StardewModdingAPI.Framework.ModLoading.InstructionHandleResult)">
            <summary>Construct an instance.</summary>
            <param name="fullTypeName">The full type name for which to find references.</param>
            <param name="methodName">The method name for which to find references.</param>
            <param name="result">The result to return for matching instructions.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.MethodFinder.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.MethodFinder.IsMatch(Mono.Cecil.Cil.Instruction)">
            <summary>Get whether a CIL instruction matches.</summary>
            <param name="instruction">The IL instruction.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Finders.PropertyFinder">
            <summary>Finds incompatible CIL instructions that reference a given property.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.PropertyFinder.FullTypeName">
            <summary>The full type name for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.PropertyFinder.PropertyName">
            <summary>The property name for which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.PropertyFinder.Result">
            <summary>The result to return for matching instructions.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.PropertyFinder.#ctor(System.String,System.String,StardewModdingAPI.Framework.ModLoading.InstructionHandleResult)">
            <summary>Construct an instance.</summary>
            <param name="fullTypeName">The full type name for which to find references.</param>
            <param name="propertyName">The property name for which to find references.</param>
            <param name="result">The result to return for matching instructions.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.PropertyFinder.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.PropertyFinder.IsMatch(Mono.Cecil.Cil.Instruction)">
            <summary>Get whether a CIL instruction matches.</summary>
            <param name="instruction">The IL instruction.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder">
            <summary>Finds references to a field, property, or method which either doesn't exist or returns a different type than the code expects.</summary>
            <remarks>This implementation is purely heuristic. It should never return a false positive, but won't detect all cases.</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.ValidateReferencesToAssemblies">
            <summary>The assembly names to which to heuristically detect broken references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.LogTechnicalDetailsForBrokenMods">
            <summary>Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.#ctor(System.Collections.Generic.ISet{System.String},System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="validateReferencesToAssemblies">The assembly names to which to heuristically detect broken references.</param>
            <param name="logTechnicalDetailsForBrokenMods">Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.ShouldValidate(Mono.Cecil.TypeReference)">
            <summary>Whether references to the given type should be validated.</summary>
            <param name="type">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.IsUnsupported(Mono.Cecil.MethodReference)">
            <summary>Get whether a method reference is a special case that's not currently supported (e.g. array methods).</summary>
            <param name="method">The method reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.GetMemberDisplayName(Mono.Cecil.MemberReference)">
            <summary>Get the member name to show in logged messages.</summary>
            <param name="memberRef">The member reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.GetFriendlyTypeName(Mono.Cecil.TypeReference)">
            <summary>Get a shorter type name for display.</summary>
            <param name="type">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.ReferenceToInvalidMemberFinder.IsProperty(Mono.Cecil.MethodReference)">
            <summary>Get whether a method reference is a property getter or setter.</summary>
            <param name="method">The method reference.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Finders.TypeAssemblyFinder">
            <summary>Finds incompatible CIL instructions that reference types in a given assembly.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.TypeAssemblyFinder.AssemblyName">
            <summary>The full assembly name to which to find references.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.TypeAssemblyFinder.Result">
            <summary>The result to return for matching instructions.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.TypeAssemblyFinder.ShouldIgnore">
            <summary>Get whether a matched type should be ignored.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.TypeAssemblyFinder.#ctor(System.String,StardewModdingAPI.Framework.ModLoading.InstructionHandleResult,System.Func{Mono.Cecil.TypeReference,System.Boolean})">
            <summary>Construct an instance.</summary>
            <param name="assemblyName">The full assembly name to which to find references.</param>
            <param name="result">The result to return for matching instructions.</param>
            <param name="shouldIgnore">Get whether a matched type should be ignored.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.TypeAssemblyFinder.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference,System.Action{Mono.Cecil.TypeReference})">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Finders.TypeFinder">
            <summary>Finds incompatible CIL instructions that reference a given type.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.TypeFinder.FullTypeNames">
            <summary>The full type names remaining to match.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.TypeFinder.Result">
            <summary>The result to return for matching instructions.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Finders.TypeFinder.ShouldIgnore">
            <summary>Get whether a matched type should be ignored.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.TypeFinder.#ctor(System.String[],StardewModdingAPI.Framework.ModLoading.InstructionHandleResult,System.Func{Mono.Cecil.TypeReference,System.Boolean})">
            <summary>Construct an instance.</summary>
            <param name="fullTypeNames">The full type names to match.</param>
            <param name="result">The result to return for matching instructions.</param>
            <param name="shouldIgnore">Get whether a matched type should be ignored.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.TypeFinder.#ctor(System.String,StardewModdingAPI.Framework.ModLoading.InstructionHandleResult,System.Func{Mono.Cecil.TypeReference,System.Boolean})">
            <summary>Construct an instance.</summary>
            <param name="fullTypeName">The full type name to match.</param>
            <param name="result">The result to return for matching instructions.</param>
            <param name="shouldIgnore">Get whether a matched type should be ignored.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Finders.TypeFinder.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference,System.Action{Mono.Cecil.TypeReference})">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler">
            <summary>The base implementation for a CIL instruction handler or rewriter.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.DefaultPhrase">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.Flags">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.Phrases">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.Handle(Mono.Cecil.ModuleDefinition)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference,System.Action{Mono.Cecil.TypeReference})">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.#ctor(System.String)">
            <summary>Construct an instance.</summary>
            <param name="defaultPhrase">A brief noun phrase indicating what the handler matches, used if <see cref="P:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.Phrases"/> is empty.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.MarkFlag(StardewModdingAPI.Framework.ModLoading.InstructionHandleResult,System.String)">
            <summary>Raise a result flag.</summary>
            <param name="flag">The result flag to set.</param>
            <param name="resultMessage">The result message to add.</param>
            <returns>Returns true for convenience.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.BaseInstructionHandler.MarkRewritten">
            <summary>Raise a generic flag indicating that the code was rewritten.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter">
            <summary>Handles recursively rewriting loaded assembly code.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteModuleDelegate">
            <summary>Rewrite a module definition in the assembly code.</summary>
            <param name="module">The current module definition.</param>
            <returns>Returns whether the module was changed.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteTypeDelegate">
            <summary>Rewrite a type reference in the assembly code.</summary>
            <param name="type">The current type reference.</param>
            <param name="replaceWith">Replaces the type reference with the given type.</param>
            <returns>Returns whether the type was changed.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteInstructionDelegate">
            <summary>Rewrite a CIL instruction in the assembly code.</summary>
            <param name="instruction">The current CIL instruction.</param>
            <param name="cil">The CIL instruction processor.</param>
            <returns>Returns whether the instruction was changed.</returns>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.Module">
            <summary>The module to rewrite.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteModuleImpl">
            <summary>Handle or rewrite a module definition if needed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteTypeImpl">
            <summary>Handle or rewrite a type reference if needed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteInstructionImpl">
            <summary>Handle or rewrite a CIL instruction if needed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.#ctor(Mono.Cecil.ModuleDefinition,StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteModuleDelegate,StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteTypeDelegate,StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteInstructionDelegate)">
            <summary>Construct an instance.</summary>
            <param name="module">The module to rewrite.</param>
            <param name="rewriteModule">Handle or rewrite a module if needed.</param>
            <param name="rewriteType">Handle or rewrite a type reference if needed.</param>
            <param name="rewriteInstruction">Handle or rewrite a CIL instruction if needed.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteModule">
            <summary>Rewrite the loaded module code.</summary>
            <returns>Returns whether the module was modified.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteTypeDefinition(Mono.Cecil.TypeDefinition)">
            <summary>Rewrite a loaded type definition.</summary>
            <param name="type">The type definition to rewrite.</param>
            <returns>Returns whether the type was modified.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteInstruction(Mono.Cecil.Cil.Instruction,Mono.Cecil.Cil.ILProcessor,System.Action{Mono.Cecil.Cil.Instruction})">
            <summary>Rewrite a CIL instruction if needed.</summary>
            <param name="instruction">The current CIL instruction.</param>
            <param name="cil">The CIL instruction processor.</param>
            <param name="replaceWith">Replaces the CIL instruction with a new one.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteMethodReference(Mono.Cecil.MethodReference)">
            <summary>Rewrite a method reference if needed.</summary>
            <param name="methodRef">The current method reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteTypeReference(Mono.Cecil.TypeReference,System.Action{Mono.Cecil.TypeReference})">
            <summary>Rewrite a type reference if needed.</summary>
            <param name="type">The current type reference.</param>
            <param name="replaceWith">Replaces the type reference with a new one.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteCustomAttributes(Mono.Collections.Generic.Collection{Mono.Cecil.CustomAttribute})">
            <summary>Rewrite custom attributes if needed.</summary>
            <param name="attributes">The current custom attributes.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RecursiveRewriter.RewriteGenericParameters(Mono.Collections.Generic.Collection{Mono.Cecil.GenericParameter})">
            <summary>Rewrites generic type parameters if needed.</summary>
            <param name="parameters">The current generic type parameters.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper">
            <summary>Provides helper methods for field rewriters.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.TypeDefinitionComparer">
            <summary>The comparer which heuristically compares type definitions.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.AsFieldReference(Mono.Cecil.Cil.Instruction)">
            <summary>Get the field reference from an instruction if it matches.</summary>
            <param name="instruction">The IL instruction.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.AsMethodReference(Mono.Cecil.Cil.Instruction)">
            <summary>Get the method reference from an instruction if it matches.</summary>
            <param name="instruction">The IL instruction.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.GetLoadValueInstruction(System.Object)">
            <summary>Get the CIL instruction to load a value onto the stack.</summary>
            <param name="rawValue">The constant value to inject.</param>
            <returns>Returns the instruction, or <c>null</c> if the value type isn't supported.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.GetEquivalentLongJumpCode(Mono.Cecil.Cil.OpCode)">
            <summary>Get the long equivalent for a short-jump op code.</summary>
            <param name="shortJumpCode">The short-jump op code.</param>
            <returns>Returns the new op code, or <c>null</c> if it isn't a short jump.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.GetFullCecilName(System.Type)">
            <summary>Get the full name for a type in the Mono.Cecil format, like <c>Netcode.NetCollection`1&lt;StardewValley.Objects.Furniture&gt;</c>.</summary>
            <param name="type">The type info.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.GetCSharpType(Mono.Cecil.TypeReference)">
            <summary>Get the resolved type for a Cecil type reference.</summary>
            <param name="type">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.GetReflectionName(Mono.Cecil.TypeReference)">
            <summary>Get the .NET reflection full name for a Cecil type reference.</summary>
            <param name="type">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.IsSameType(System.Type,Mono.Cecil.TypeReference)">
            <summary>Get whether a type matches a type reference.</summary>
            <param name="type">The defined type.</param>
            <param name="reference">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.IsSameType(Mono.Cecil.TypeReference,Mono.Cecil.TypeReference)">
            <summary>Get whether a type matches a type reference.</summary>
            <param name="type">The defined type.</param>
            <param name="reference">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.LooksLikeSameType(Mono.Cecil.TypeReference,Mono.Cecil.TypeReference)">
            <summary>Determine whether two type IDs look like the same type, accounting for placeholder values such as !0.</summary>
            <param name="typeA">The type ID to compare.</param>
            <param name="typeB">The other type ID to compare.</param>
            <returns>true if the type IDs look like the same type, false if not.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.HasSameNamespaceAndName(Mono.Cecil.TypeReference,Mono.Cecil.TypeDefinition)">
            <summary>Get whether a type reference and definition have the same namespace and name. This does <strong>not</strong> guarantee they point to the same type due to generics.</summary>
            <param name="typeReference">The type reference.</param>
            <param name="typeDefinition">The type definition.</param>
            <remarks>This avoids an issue where we can't compare <see cref="P:Mono.Cecil.TypeReference.FullName"/> to <see cref="P:Mono.Cecil.TypeReference.FullName"/> because of the different ways they handle generics (e.g. <c>List`1&lt;System.String&gt;</c> vs <c>List`1</c>).</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.HasMatchingSignature(System.Reflection.MethodBase,Mono.Cecil.MethodReference)">
            <summary>Get whether a method definition matches the signature expected by a method reference.</summary>
            <param name="definition">The method definition.</param>
            <param name="reference">The method reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.HasMatchingSignature(Mono.Cecil.MethodDefinition,Mono.Cecil.MethodReference)">
            <summary>Get whether a method definition matches the signature expected by a method reference.</summary>
            <param name="definition">The method definition.</param>
            <param name="reference">The method reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.HasMatchingSignature(System.Type,Mono.Cecil.MethodReference)">
            <summary>Get whether a type has a method whose signature matches the one expected by a method reference.</summary>
            <param name="type">The type to check.</param>
            <param name="reference">The method reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.ThrowFakeConstructorCalled">
            <summary>Throw an exception indicating that a facade was constructed, which should never happen since they're only used through CIL rewrites.</summary>
            <exception cref="T:System.InvalidOperationException">An exception indicating the constructor was called incorrectly.</exception>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Framework.SuppressReasons">
            <summary>Provides common reasons for suppressing warnings in rewriter code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Framework.SuppressReasons.MatchesOriginal">
            <summary>A message indicating the code matches the original game code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Framework.SuppressReasons.UsedViaRewriting">
            <summary>A message indicating the code is used via assembly rewriting.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Framework.SuppressReasons.BaseForClarity">
            <summary>A message indicating the code is used via assembly rewriting.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.IInstructionHandler">
            <summary>Performs predefined logic for detected CIL instructions.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.DefaultPhrase">
            <summary>A brief noun phrase indicating what the handler matches, used if <see cref="P:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.Phrases"/> is empty.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.Flags">
            <summary>The rewrite flags raised for the current module.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.Phrases">
            <summary>The brief noun phrases indicating what the handler matched for the current module.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.Handle(Mono.Cecil.ModuleDefinition)">
            <summary>Rewrite a module definition if needed.</summary>
            <param name="module">The assembly module.</param>
            <returns>Returns whether the module was changed.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference,System.Action{Mono.Cecil.TypeReference})">
            <summary>Rewrite a type reference if needed.</summary>
            <param name="module">The assembly module containing the instruction.</param>
            <param name="type">The type definition to handle.</param>
            <param name="replaceWith">Replaces the type reference with a new one.</param>
            <returns>Returns whether the type was changed.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <summary>Rewrite a CIL instruction reference if needed.</summary>
            <param name="module">The assembly module containing the instruction.</param>
            <param name="cil">The CIL processor.</param>
            <param name="instruction">The CIL instruction to handle.</param>
            <returns>Returns whether the instruction was changed.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.IInstructionHandler.Reset">
            <summary>Reset the handler so it can be applied to a new module.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.IncompatibleInstructionException">
            <summary>An exception raised when an incompatible instruction is found while loading a mod assembly.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.IncompatibleInstructionException.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.IncompatibleInstructionException.#ctor(System.String)">
            <summary>Construct an instance.</summary>
            <param name="message">A message which describes the error.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult">
            <summary>Indicates how an instruction was handled.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.None">
            <summary>No special handling is needed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.Rewritten">
            <summary>The instruction was successfully rewritten for compatibility.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.NotCompatible">
            <summary>The instruction is not compatible and can't be rewritten for compatibility.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.DetectedGamePatch">
            <summary>The instruction is compatible, but patches the game in a way that may impact stability.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.DetectedSaveSerializer">
            <summary>The instruction is compatible, but affects the save serializer in a way that may make saves unloadable without the mod.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.DetectedUnvalidatedUpdateTick">
            <summary>The instruction is compatible, but references <see cref="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicking"/> or <see cref="E:StardewModdingAPI.Events.ISpecializedEvents.UnvalidatedUpdateTicked"/> which may impact stability.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.DetectedConsoleAccess">
            <summary>The instruction accesses the SMAPI console directly.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.DetectedFilesystemAccess">
            <summary>The instruction accesses the filesystem directly.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.InstructionHandleResult.DetectedShellAccess">
            <summary>The instruction accesses the OS shell or processes directly.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.InvalidModStateException">
            <summary>An exception which indicates that something went seriously wrong while loading mods, and SMAPI should abort outright.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.InvalidModStateException.#ctor(System.String,System.Exception)">
            <summary>Construct an instance.</summary>
            <param name="message">The error message.</param>
            <param name="ex">The underlying exception, if any.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.ModDependencyStatus">
            <summary>The status of a given mod in the dependency-sorting algorithm.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModDependencyStatus.Queued">
            <summary>The mod hasn't been visited yet.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModDependencyStatus.Checking">
            <summary>The mod is currently being analyzed as part of a dependency chain.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModDependencyStatus.Sorted">
            <summary>The mod has already been sorted.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModDependencyStatus.Failed">
            <summary>The mod couldn't be sorted due to a metadata issue (e.g. missing dependencies).</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.ModFailReason">
            <summary>Indicates why a mod could not be loaded.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.DisabledByDotConvention">
            <summary>The mod has been disabled by prefixing its folder with a dot.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.Duplicate">
            <summary>Multiple copies of the mod are installed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.EmptyFolder">
            <summary>The folder is empty or contains only ignored files.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.Incompatible">
            <summary>The mod has incompatible code instructions, needs a newer SMAPI version, or is marked 'assume broken' in the SMAPI metadata list.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.InvalidManifest">
            <summary>The mod's manifest is missing or invalid.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.LoadFailed">
            <summary>The mod was deemed compatible, but SMAPI failed when it tried to load it.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.MissingDependencies">
            <summary>The mod requires other mods which aren't installed, or its dependencies have a circular reference.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.Obsolete">
            <summary>The mod is marked obsolete in the SMAPI metadata list.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModFailReason.XnbMod">
            <summary>The folder is an XNB mod, which can't be loaded through SMAPI.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.ModMetadata">
            <summary>Metadata for a mod.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModMetadata.ActualWarnings">
            <summary>The non-error issues with the mod, including warnings suppressed by the data record.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModMetadata.Dependencies">
            <summary>The mod IDs which are listed as a requirement by this mod. The value for each pair indicates whether the dependency is required (i.e. not an optional dependency).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.DisplayName">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.RootPath">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.DirectoryPath">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.RelativeDirectoryPath">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Manifest">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.DataRecord">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Status">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.FailReason">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Warnings">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Error">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.ErrorDetails">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.IsIgnored">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Mod">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.ContentPack">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Translations">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Monitor">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.Api">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.UpdateCheckData">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.IsContentPack">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModMetadata.FakeContentPacks">
            <summary>The fake content packs created by this mod, if any.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.#ctor(System.String,System.String,System.String,StardewModdingAPI.IManifest,StardewModdingAPI.Toolkit.Framework.ModData.ModDataRecordVersionedFields,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="displayName">The mod's display name.</param>
            <param name="directoryPath">The mod's full directory path within the <paramref name="rootPath"/>.</param>
            <param name="rootPath">The root path containing mods.</param>
            <param name="manifest">The mod manifest.</param>
            <param name="dataRecord">Metadata about the mod from SMAPI's internal data (if any).</param>
            <param name="isIgnored">Whether the mod folder should be ignored. This should be <c>true</c> if it was found within a folder whose name starts with a dot.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.SetStatusFound">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.SetStatus(StardewModdingAPI.Framework.ModLoading.ModMetadataStatus,StardewModdingAPI.Framework.ModLoading.ModFailReason,System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.SetWarning(StardewModdingAPI.Toolkit.Framework.ModData.ModWarning)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.RemoveWarning(StardewModdingAPI.Toolkit.Framework.ModData.ModWarning)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.SetMod(StardewModdingAPI.IMod,StardewModdingAPI.Framework.ModHelpers.TranslationHelper)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.SetMod(StardewModdingAPI.IContentPack,StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.ModHelpers.TranslationHelper)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.SetApi(System.Object)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.SetUpdateData(StardewModdingAPI.Toolkit.Framework.Clients.WebApi.ModEntryModel)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.HasManifest">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.HasID">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.HasID(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.GetUpdateKeys(System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.HasRequiredModId(System.String,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.GetRequiredModIds(System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.HasValidUpdateKeys">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.HasWarnings(StardewModdingAPI.Toolkit.Framework.ModData.ModWarning[])">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.GetRelativePathWithRoot">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.GetFakeContentPacks">
            <summary>Get the currently live fake content packs created by this mod.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModMetadata.ExtractDependencies">
            <summary>Extract mod IDs from the manifest that must be installed to load this mod.</summary>
            <returns>Returns a dictionary of mod ID => is required (i.e. not an optional dependency).</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.ModMetadataStatus">
            <summary>Indicates the status of a mod's metadata resolution.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModMetadataStatus.Found">
            <summary>The mod has been found, but hasn't been processed yet.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.ModMetadataStatus.Failed">
            <summary>The mod cannot be loaded.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.ModResolver">
            <summary>Finds and processes mod metadata.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.ReadManifests(StardewModdingAPI.Toolkit.ModToolkit,System.String,StardewModdingAPI.Toolkit.Framework.ModData.ModDatabase,System.Boolean)">
            <summary>Get manifest metadata for each folder in the given root path.</summary>
            <param name="toolkit">The mod toolkit.</param>
            <param name="rootPath">The root path to search for mods.</param>
            <param name="modDatabase">Handles access to SMAPI's internal mod metadata list.</param>
            <param name="useCaseInsensitiveFilePaths">Whether to match file paths case-insensitively, even on Linux.</param>
            <returns>Returns the manifests by relative folder.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.ValidateManifests(System.Collections.Generic.IEnumerable{StardewModdingAPI.Framework.IModMetadata},StardewModdingAPI.ISemanticVersion,StardewModdingAPI.ISemanticVersion,System.Func{System.String,System.String},System.Func{System.String,StardewModdingAPI.Toolkit.Utilities.PathLookups.IFileLookup},System.Boolean)">
            <summary>Validate manifest metadata.</summary>
            <param name="mods">The mod manifests to validate.</param>
            <param name="apiVersion">The current SMAPI version.</param>
            <param name="gameVersion">The current Stardew Valley version.</param>
            <param name="getUpdateUrl">Get an update URL for an update key (if valid).</param>
            <param name="getFileLookup">Get a file lookup for the given directory.</param>
            <param name="validateFilesExist">Whether to validate that files referenced in the manifest (like <see cref="P:StardewModdingAPI.IManifest.EntryDll"/>) exist on disk. This can be disabled to only validate the manifest itself.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.ApplyLoadOrderOverrides(StardewModdingAPI.Framework.IModMetadata[],System.Collections.Generic.HashSet{System.String},System.Collections.Generic.HashSet{System.String})">
            <summary>Apply preliminary overrides to the load order based on the SMAPI configuration.</summary>
            <param name="mods">The mods to process.</param>
            <param name="modIdsToLoadEarly">The mod IDs SMAPI should load before any other mods (except those needed to load them).</param>
            <param name="modIdsToLoadLate">The mod IDs SMAPI should load after any other mods.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.ProcessDependencies(System.Collections.Generic.IReadOnlyList{StardewModdingAPI.Framework.IModMetadata},StardewModdingAPI.Toolkit.Framework.ModData.ModDatabase)">
            <summary>Sort the given mods by the order they should be loaded.</summary>
            <param name="mods">The mods to process.</param>
            <param name="modDatabase">Handles access to SMAPI's internal mod metadata list.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.ProcessDependencies(System.Collections.Generic.IReadOnlyList{StardewModdingAPI.Framework.IModMetadata},StardewModdingAPI.Toolkit.Framework.ModData.ModDatabase,StardewModdingAPI.Framework.IModMetadata,System.Collections.Generic.IDictionary{StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.ModLoading.ModDependencyStatus},System.Collections.Generic.Stack{StardewModdingAPI.Framework.IModMetadata},System.Collections.Generic.ICollection{StardewModdingAPI.Framework.IModMetadata})">
            <summary>Sort a mod's dependencies by the order they should be loaded, and remove any mods that can't be loaded due to missing or conflicting dependencies.</summary>
            <param name="mods">The full list of mods being validated.</param>
            <param name="modDatabase">Handles access to SMAPI's internal mod metadata list.</param>
            <param name="mod">The mod whose dependencies to process.</param>
            <param name="states">The dependency state for each mod.</param>
            <param name="sortedMods">The list in which to save mods sorted by dependency order.</param>
            <param name="currentChain">The current change of mod dependencies.</param>
            <returns>Returns the mod dependency status.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.GetDependenciesFrom(StardewModdingAPI.IManifest,System.Collections.Generic.IReadOnlyList{StardewModdingAPI.Framework.IModMetadata})">
            <summary>Get the dependencies declared in a manifest.</summary>
            <param name="manifest">The mod manifest.</param>
            <param name="loadedMods">The loaded mods.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.GetTechnicalReasonForStatusOverride(StardewModdingAPI.Framework.IModMetadata)">
            <summary>Get a technical message indicating why a mod's compatibility status was overridden, if applicable.</summary>
            <param name="mod">The mod metadata.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.ModResolver.ModDependency">
            <summary>Represents a dependency from one mod to another.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModResolver.ModDependency.ID">
            <summary>The unique ID of the required mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModResolver.ModDependency.MinVersion">
            <summary>The minimum required version (if any).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModResolver.ModDependency.IsRequired">
            <summary>Whether the mod shouldn't be loaded if the dependency isn't available.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.ModResolver.ModDependency.Mod">
            <summary>The loaded mod that fulfills the dependency (if available).</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.ModResolver.ModDependency.#ctor(System.String,StardewModdingAPI.ISemanticVersion,StardewModdingAPI.Framework.IModMetadata,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="id">The unique ID of the required mod.</param>
            <param name="minVersion">The minimum required version (if any).</param>
            <param name="mod">The loaded mod that fulfills the dependency (if available).</param>
            <param name="isRequired">Whether the mod shouldn't be loaded if the dependency isn't available.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap">
            <summary>Metadata for mapping assemblies to the current <see cref="T:StardewModdingAPI.Toolkit.Utilities.Platform"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.TargetPlatform">
            <summary>The target game platform.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.RemoveNames">
            <summary>The short assembly names to remove as assembly reference, and replace with the <see cref="F:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.Targets"/>. These should be short names (like "Stardew Valley").</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.Targets">
            <summary>The assemblies to target. Equivalent types should be rewritten to use these assemblies.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.TargetReferences">
            <summary>An assembly => reference cache.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.TargetModules">
            <summary>An assembly => module cache.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.#ctor(StardewModdingAPI.Toolkit.Utilities.Platform,System.String[],System.Reflection.Assembly[])">
            <summary>Construct an instance.</summary>
            <param name="targetPlatform">The target game platform.</param>
            <param name="removeAssemblyNames">The assembly short names to remove (like <c>Stardew Valley</c>).</param>
            <param name="targetAssemblies">The assemblies to target.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.PlatformAssemblyMap.Dispose">
            <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter">
            <summary>Automatically fix references to fields that have been replaced by a property or const field.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter.RewriteReferencesToAssemblies">
            <summary>The assembly names to which to rewrite broken references.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter.#ctor(System.Collections.Generic.ISet{System.String})">
            <summary>Construct an instance.</summary>
            <param name="rewriteReferencesToAssemblies">The assembly names to which to rewrite broken references.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter.ShouldValidate(Mono.Cecil.TypeReference)">
            <summary>Whether references to the given type should be validated.</summary>
            <param name="type">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter.TryRewriteToProperty(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.Instruction,Mono.Cecil.FieldReference,Mono.Cecil.TypeDefinition,System.Boolean)">
            <summary>Try rewriting the field into a matching property.</summary>
            <param name="module">The assembly module containing the instruction.</param>
            <param name="instruction">The CIL instruction to rewrite.</param>
            <param name="fieldRef">The field reference.</param>
            <param name="declaringType">The type on which the field was defined.</param>
            <param name="isRead">Whether the field is being read; else it's being written to.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter.TryRewriteToConstField(Mono.Cecil.Cil.Instruction,Mono.Cecil.FieldDefinition)">
            <summary>Try rewriting the field into a matching const field.</summary>
            <param name="instruction">The CIL instruction to rewrite.</param>
            <param name="field">The field definition.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicFieldRewriter.TryRewriteToInheritedField(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.Instruction,Mono.Cecil.FieldReference,Mono.Cecil.FieldDefinition)">
            <summary>Try rewriting the field into a matching inherited field.</summary>
            <param name="module">The assembly module containing the instruction.</param>
            <param name="instruction">The CIL instruction to rewrite.</param>
            <param name="fieldRef">The field reference.</param>
            <param name="fieldDefinition">The actual field resolved by Cecil.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicMethodRewriter">
            <summary>Automatically fix references to methods that had extra optional parameters added.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicMethodRewriter.RewriteReferencesToAssemblies">
            <summary>The assembly names to which to rewrite broken references.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicMethodRewriter.#ctor(System.Collections.Generic.ISet{System.String})">
            <summary>Construct an instance.</summary>
            <param name="rewriteReferencesToAssemblies">The assembly names to which to rewrite broken references.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicMethodRewriter.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicMethodRewriter.ShouldValidate(Mono.Cecil.TypeReference)">
            <summary>Whether references to the given type should be validated.</summary>
            <param name="type">The type reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.HeuristicMethodRewriter.InitialParametersMatch(Mono.Cecil.MethodReference,Mono.Cecil.MethodDefinition)">
            <summary>Get whether every parameter in the method reference matches the exact order and type of the parameters in the method definition. This ignores extra parameters in the definition.</summary>
            <param name="methodRef">The method reference whose parameters to check.</param>
            <param name="method">The method definition whose parameters to check against.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.IRewriteFacade">
            <summary>Marker class for a rewrite facade used to validate mappings. See comments on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter">
             <summary>Rewrites references to types or type members so they point to a different type or member.</summary>
             <remarks>
               <para>
                 When a type or member was moved/renamed as-is in the game code, you can map it directly using methods like
                 <see cref="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapField(System.String,System.Type,System.String)"/>.
               </para>
            
               <para>
                 Otherwise you can use <see cref="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapFacade(System.String,System.Type,System.Boolean)"/> to create a 'facade' type. This is a type which subclasses
                 the original type (if needed), and provides any number of members with the old signatures which internally
                 call the new members.
               </para>
            
               <para>Member mappings are only used in cases where the reference to the original member can't be resolved.</para>
            
               <para>
                 To auto-map members to a facade type:
                 <list type="bullet">
                   <item>
                     <strong>Field</strong>: add a public property with the old name and type. Field reads/writes will be
                     auto-mapped to the property's get/set methods, if present. If a get/set method isn't present, that
                     reference will be kept as-is (so you can rewrite only reads or only writes if needed).
                   </item>
                   <item>
                     <strong>Property</strong> or <strong>Method</strong>: add a public property/method with the old name
                     and signature.
                   </item>
                   <item>
                     <strong>Constructor:</strong> add a public constructor with the old signature, <em>OR</em> a public
                     static method named 'Constructor' with the old signature which returns an instance of the intended
                     type. The latter avoids returning a facade instance to the calling code, which can cause errors (e.g.
                     when trying to write it to the save file).</item>
                 </list>
               </para>
            
               <para>
                 When adding a facade for a type with a required constructor, you'll need a constructor on the facade type.
                 This should be private and will never be called (unless you want to rewrite references to the original
                 constructors per the above). You can call <see cref="M:StardewModdingAPI.Framework.ModLoading.Framework.RewriteHelper.ThrowFakeConstructorCalled"/> in the
                 private constructor to enforce that facades aren't constructed manually.
               </para>
             </remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.TypeMap">
            <summary>The new types to reference, indexed by the old type's full name.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MemberMap">
            <summary>The new members to reference, indexed by the old member's full name.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapType(System.String,System.Type)">
            <summary>Rewrite type references to point to another type.</summary>
            <param name="fromFullName">The full type name, like <c>Microsoft.Xna.Framework.Vector2</c>.</param>
            <param name="toType">The new type to reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapField(System.String,System.Type,System.String)">
            <summary>Rewrite field references to point to another field with the same field type (not necessarily on the same parent).</summary>
            <param name="fromFullName">The full field name, like <c>Microsoft.Xna.Framework.Vector2 StardewValley.Character::Tile</c>.</param>
            <param name="toType">The new type which will have the field.</param>
            <param name="toName">The new field name to reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapFieldName(System.Type,System.String,System.String)">
            <summary>Rewrite field references to point to another field with the field and parent type.</summary>
            <param name="type">The type which has the old and new fields.</param>
            <param name="fromName">The field name.</param>
            <param name="toName">The new field name to reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapFieldToProperty(System.String,System.Type,System.String)">
            <summary>Rewrite field references to point to a property with the same return type.</summary>
            <param name="fromFullName">The full field name, like <c>Microsoft.Xna.Framework.Vector2 StardewValley.Character::Tile</c>.</param>
            <param name="toType">The new type which will have the field.</param>
            <param name="toName">The new field name to reference.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapMethod(System.String,System.Type,System.String,System.Type[])">
            <summary>Rewrite method references to point to another method with the same signature.</summary>
            <param name="fromFullName">The full method name, like <c>Microsoft.Xna.Framework.Vector2 StardewValley.Character::getTileLocation()</c>.</param>
            <param name="toType">The new type which will have the method.</param>
            <param name="toName">The new method name to reference.</param>
            <param name="parameterTypes">The method's parameter types to disambiguate between overloads, if needed.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapFacade``2(System.Boolean)">
            <summary>Rewrite field, property, constructor, and method references to point to a matching equivalent on another class.</summary>
            <typeparam name="TFromType">The type to which references should be rewritten.</typeparam>
            <typeparam name="TFacade">The facade type to which to point matching references.</typeparam>
            <param name="mapDefaultConstructor">If the facade has a public constructor with no parameters, whether to rewrite references to empty constructors to use that one. (This is needed because .NET has no way to distinguish between an implicit and explicit constructor.)</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapFacade(System.String,System.Type,System.Boolean)">
            <summary>Rewrite field, property, constructor, and method references to point to a matching equivalent on another class.</summary>
            <param name="fromTypeName">The full name of the type to which references should be rewritten.</param>
            <param name="toType">The facade type to which to point matching references.</param>
            <param name="mapDefaultConstructor">If the facade has a public constructor with no parameters, whether to rewrite references to empty constructors to use that one. (This is needed because .NET has no way to distinguish between an implicit and explicit constructor.)</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference,System.Action{Mono.Cecil.TypeReference})">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.Cil.ILProcessor,Mono.Cecil.Cil.Instruction)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.MapMember(System.String,System.Reflection.MemberInfo,System.String)">
            <summary>Add a member to replace.</summary>
            <param name="fromFullName">The full member name, like <c>Microsoft.Xna.Framework.Vector2 StardewValley.Character::getTileLocation()</c>.</param>
            <param name="toMember">The new member to reference.</param>
            <param name="typeLabel">A human-readable label for the reference type, like 'field' or 'method'.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.OnRewritten(Mono.Cecil.MemberReference,System.String)">
            <summary>Update the rewriter state after an reference is replaced.</summary>
            <param name="fromMember">The previous member reference.</param>
            <param name="typeLabel">A human-readable label for the reference type, like 'field' or 'method'.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.FormatCecilType(System.Type)">
            <summary>Get a formatted type name in the Cecil full-method-name format.</summary>
            <param name="type">The type to format.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter.FormatCecilParameterList(System.Reflection.ParameterInfo[])">
            <summary>Get a formatted parameter list in the Cecil full-method-name format.</summary>
            <param name="parameters">The parameter list to format.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_5.ArchitectureAssemblyRewriter">
            <summary>Removes the 32-bit-only from loaded assemblies.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_5.ArchitectureAssemblyRewriter.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_5.ArchitectureAssemblyRewriter.Handle(Mono.Cecil.ModuleDefinition)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_5.HarmonyDetector">
            <summary>Detects Harmony references.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_5.HarmonyDetector.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_5.HarmonyDetector.Handle(Mono.Cecil.ModuleDefinition,Mono.Cecil.TypeReference,System.Action{Mono.Cecil.TypeReference})">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_5.SpriteBatchFacade">
            <summary>Provides <see cref="T:Microsoft.Xna.Framework.Graphics.SpriteBatch"/> method signatures that can be injected into mod code for compatibility with mods written for XNA Framework before Stardew Valley 1.5.5.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.AbigailGameFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Minigames.AbigailGame"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.AnimalHouseFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.AnimalHouse"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BasicProjectileFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Projectiles.BasicProjectile"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BedFurnitureFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.BedFurniture"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BoatTunnelFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Locations.BoatTunnel"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BootsFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Boots"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BreakableContainerFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.BreakableContainer"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BuffFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Buff"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BuffsDisplayFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BuffsDisplayFacade"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BuildableGameLocationFacade">
            <summary>Maps Stardew Valley 1.5.6's <c>BuildableGameLocation</c> methods to their newer form on <see cref="T:StardewValley.GameLocation"/> to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BuildingFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Buildings.Building"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.BushFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.Bush"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ButterflyFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.BellsAndWhistles.Butterfly"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.CarpenterMenuFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Menus.CarpenterMenu"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.CaskFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Cask"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.CharacterFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Character"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ChestFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Chest"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ClothingFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Clothing"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ColoredObjectFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.ColoredObject"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.CrabPotFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.CrabPot"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.CraftingRecipeFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.CraftingRecipe"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.CropFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Crop"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.DebuffingProjectileFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Projectiles.DebuffingProjectile"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.DelayedActionFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.DelayedAction"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.DialogueBoxFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Menus.DialogueBox"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.DialogueFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Dialogue"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.DiscreteColorPickerFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Menus.DiscreteColorPicker"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.EventFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Event"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FarmAnimalFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.FarmAnimal"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FarmerFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Farmer"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FarmerRendererFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.FarmerRenderer"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FarmerTeamFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.FarmerTeam"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FarmFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Farm"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FenceFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Fence"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FishingRodFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Tools.FishingRod"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FishTankFurnitureFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.FishTankFurniture"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ForestFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Locations.Forest"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FruitTreeFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.FruitTree"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.FurnitureFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Furniture"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Game1Facade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Game1"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.GameLocationFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.GameLocation"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.GiantCropFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.GiantCrop"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.HatFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Hat"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.HoeDirtFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.HoeDirt"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.HudMessageFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.HUDMessage"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.IClickableMenuFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Menus.IClickableMenu"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ImplicitConversionOperators">
            <summary>Reimplements implicit conversion operators that were removed in 1.6 for sealed classes.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList">
            <summary>An implementation of <see cref="T:Netcode.NetObjectList`1"/> which tracks an underlying <see cref="F:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.Inventory"/> instance.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.CachedWrappers">
            <summary>A cached lookup of inventory wrappers.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.Inventory">
            <summary>The underlying inventory to track.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.#ctor(StardewValley.Inventories.Inventory)">
            <summary>Construct an instance.</summary>
            <param name="inventory">The underlying inventory to track.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.GetCachedWrapperFor(StardewValley.Inventories.Inventory)">
            <summary>Get a wrapper for a given inventory instance.</summary>
            <param name="inventory">The inventory to track.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.Item(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.Add(StardewValley.Item)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.Clear">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.Insert(System.Int32,StardewValley.Item)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.RemoveAt(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.OnInventorySlotChanged(StardewValley.Inventories.Inventory,System.Int32,StardewValley.Item,StardewValley.Item)">
            <summary>Handle a change to the underlying inventory.</summary>
            <param name="inventory">The inventory instance.</param>
            <param name="index">The slot index which changed.</param>
            <param name="before">The previous value.</param>
            <param name="after">The new value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.OnInventoryReplaced(StardewValley.Inventories.Inventory,System.Collections.Generic.IList{StardewValley.Item},System.Collections.Generic.IList{StardewValley.Item})">
            <summary>Handle the underlying inventory getting replaced with a new list.</summary>
            <param name="inventory">The inventory instance.</param>
            <param name="before">The previous list of values.</param>
            <param name="after">The new list of values.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.InventoryToNetObjectList.RebuildList">
            <summary>Rebuild the list to match the underlying inventory.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.NetRefWrapperCache`1">
            <summary>A cache of <see cref="T:Netcode.NetRef`1"/> instances for specific values.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.NetRefWrapperCache`1.CachedWrappers">
            <summary>A cached lookup of wrappers.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.NetRefWrapperCache`1.GetCachedWrapperFor(`0)">
            <summary>Get a wrapper for a given value.</summary>
            <param name="value">The value to wrap.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.ReadOnlyValueToNetString">
            <summary>An implementation of <see cref="T:Netcode.NetString"/> which returns a predetermined value and doesn't allow editing.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.ReadOnlyValueToNetString.FieldLabel">
            <summary>A human-readable name for the original field to show in error messages.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.ReadOnlyValueToNetString.#ctor(System.String,System.String)">
            <summary>Construct an instance.</summary>
            <param name="fieldLabel">A human-readable name for the original field to show in error messages.</param>
            <param name="value">The value to set.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.Internal.ReadOnlyValueToNetString.Set(System.String)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ItemFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Item"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.JunimoHutFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Buildings.JunimoHut"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.LargeTerrainFeatureFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.LargeTerrainFeature"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.LayerFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:xTile.Layers.Layer"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.LibraryMuseumFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Locations.LibraryMuseum"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.LocalizedContentManagerFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.LocalizedContentManager"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.MeleeWeaponFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Tools.MeleeWeapon"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.MineShaftFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Locations.MineShaft"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.MultiplayerFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Multiplayer"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.NetFieldBaseFacade`2">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:Netcode.NetFieldBase`2"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.NetFieldsFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:Netcode.NetFields"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.NetLongFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:Netcode.NetLong"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.NetPausableFieldFacade`3">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Network.NetPausableField`3"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.NetWorldStateFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Network.NetWorldState"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.NpcFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.NPC"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ObjectFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Object"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.OverlaidDictionaryFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Network.OverlaidDictionary"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.PathFindControllerFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Pathfinding.PathFindController"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ProfileMenuFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Menus.ProfileMenu"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ProjectileFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Projectiles.Projectile"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.QuestFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Quests.Quest"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ResourceClumpFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.ResourceClump"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.RingFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Ring"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ShopMenuFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Menus.ShopMenu"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.SignFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Sign"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.SlingshotFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Tools.Slingshot"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.SoundEffectFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:Microsoft.Xna.Framework.Audio.SoundEffect"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.SpriteTextFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.BellsAndWhistles.SpriteText"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.StatsFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Stats"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.StorageFurnitureFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.StorageFurniture"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.TemporaryAnimatedSpriteFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TemporaryAnimatedSprite"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.TerrainFeatureFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.TerrainFeature"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ToolFactoryFacade">
            <summary>Maps Stardew Valley 1.5.6's <c>ToolFactory</c> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.TreeFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.TerrainFeatures.Tree"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.TvFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.TV"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.UtilityFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Utility"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.ViewportExtensionsFacade">
            <summary>Maps Stardew Valley 1.5.6's <c>ViewportExtensions</c> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.WallpaperFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Objects.Wallpaper"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.WateringCanFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.Tools.WateringCan"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Rewriters.StardewValley_1_6.WorldDateFacade">
            <summary>Maps Stardew Valley 1.5.6's <see cref="T:StardewValley.WorldDate"/> methods to their newer form to avoid breaking older mods.</summary>
            <remarks>This is public to support SMAPI rewriting and should never be referenced directly by mods. See remarks on <see cref="T:StardewModdingAPI.Framework.ModLoading.Rewriters.ReplaceReferencesRewriter"/> for more info.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader">
            <summary>Reads symbol data for an assembly.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.Module">
            <summary>The module for which to read symbols.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.Stream">
            <summary>The symbol file stream.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.Reader">
            <summary>The underlying symbol reader.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.#ctor(Mono.Cecil.ModuleDefinition,System.IO.Stream)">
            <summary>Construct an instance.</summary>
            <param name="module">The module for which to read symbols.</param>
            <param name="stream">The symbol file stream.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.GetWriterProvider">
            <summary>Get the symbol writer provider for the assembly.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.ProcessDebugHeader(Mono.Cecil.Cil.ImageDebugHeader)">
            <summary>Process a debug header in the symbol file.</summary>
            <param name="header">The debug header.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.Read(Mono.Cecil.MethodDefinition)">
            <summary>Read the method debug information for a method in the assembly.</summary>
            <param name="method">The method definition.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReader.Dispose">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReaderProvider">
            <summary>Provides assembly symbol readers for Mono.Cecil.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReaderProvider.BaseProvider">
            <summary>The underlying symbol reader provider.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReaderProvider.SymbolsByAssemblyPath">
            <summary>The symbol data loaded by absolute assembly path.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReaderProvider.TryAddSymbolData(System.String,System.Func{System.IO.Stream})">
            <summary>Add the symbol file for a given assembly name, if it's not already registered.</summary>
            <param name="fileName">The assembly file name.</param>
            <param name="getSymbolStream">Get the raw file stream for the symbols.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReaderProvider.GetSymbolReader(Mono.Cecil.ModuleDefinition,System.String)">
            <summary>Get a symbol reader for a given module and assembly name.</summary>
            <param name="module">The loaded assembly module.</param>
            <param name="fileName">The assembly file name.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolReaderProvider.GetSymbolReader(Mono.Cecil.ModuleDefinition,System.IO.Stream)">
            <summary>Get a symbol reader for a given module and symbol stream.</summary>
            <param name="module">The loaded assembly module.</param>
            <param name="symbolStream">The loaded symbol file stream.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolWriterProvider">
            <summary>Provides assembly symbol writers for Mono.Cecil.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolWriterProvider.DefaultProvider">
            <summary>The default symbol writer provider.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolWriterProvider.PortablePdbProvider">
            <summary>The symbol writer provider for the portable PDB format.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolWriterProvider.GetSymbolWriter(Mono.Cecil.ModuleDefinition,System.String)">
            <summary>Get a symbol writer for a given module and assembly path.</summary>
            <param name="module">The loaded assembly module.</param>
            <param name="fileName">The assembly name.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.Symbols.SymbolWriterProvider.GetSymbolWriter(Mono.Cecil.ModuleDefinition,System.IO.Stream)">
            <summary>Get a symbol writer for a given module and symbol stream.</summary>
            <param name="module">The loaded assembly module.</param>
            <param name="symbolStream">The loaded symbol file stream.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModLoading.TypeReferenceComparer">
            <summary>Performs heuristic equality checks for <see cref="T:Mono.Cecil.TypeReference"/> instances.</summary>
            <remarks>
            This implementation compares <see cref="T:Mono.Cecil.TypeReference"/> instances to see if they likely
            refer to the same type. While the implementation is obvious for types like <c>System.Bool</c>,
            this class mainly exists to handle cases like <c>System.Collections.Generic.Dictionary`2&lt;!0,Netcode.NetRoot`1&lt;!1&gt;&gt;</c>
            and <c>System.Collections.Generic.Dictionary`2&lt;TKey,Netcode.NetRoot`1&lt;TValue&gt;&gt;</c>
            which are compatible, but not directly comparable. It does this by splitting each type name
            into its component token types, and performing placeholder substitution (e.g. <c>!0</c> to
            <c>TKey</c> in the above example). If all components are equal after substitution, and the
            tokens can all be mapped to the same generic type, the types are considered equal.
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.TypeReferenceComparer.Equals(Mono.Cecil.TypeReference,Mono.Cecil.TypeReference)">
            <summary>Get whether the specified objects are equal.</summary>
            <param name="a">The first object to compare.</param>
            <param name="b">The second object to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.TypeReferenceComparer.GetHashCode(Mono.Cecil.TypeReference)">
            <summary>Get a hash code for the specified object.</summary>
            <param name="obj">The object for which a hash code is to be returned.</param>
            <exception cref="T:System.ArgumentNullException">The object type is a reference type and <paramref name="obj" /> is null.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.TypeReferenceComparer.HeuristicallyEquals(Mono.Cecil.TypeReference,Mono.Cecil.TypeReference)">
            <summary>Get whether two types are heuristically equal based on generic type token substitution.</summary>
            <param name="typeA">The first type to compare.</param>
            <param name="typeB">The second type to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.TypeReferenceComparer.MapPlaceholder(System.String,System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
            <summary>Map a generic type placeholder (like <c>!0</c>) to its actual type.</summary>
            <param name="placeholder">The token placeholder.</param>
            <param name="type">The actual type.</param>
            <param name="map">The map of token to map substitutions.</param>
            <returns>Returns the previously-mapped type if applicable, else the <paramref name="type"/>.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModLoading.TypeReferenceComparer.GetTypeSymbols(System.String)">
            <summary>Get the top-level type symbols in a type name (e.g. <code>List</code> and <code>NetRef&lt;T&gt;</code> in <code>List&lt;NetRef&lt;T&gt;&gt;</code>)</summary>
            <param name="typeName">The full type name.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.ModRegistry">
            <summary>Tracks the installed mods.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModRegistry.Mods">
            <summary>The registered mod data.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.ModRegistry.ModNamesByAssembly">
            <summary>An assembly full name => mod lookup.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModRegistry.AreAllModsLoaded">
            <summary>Whether all mod assemblies have been loaded.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.ModRegistry.AreAllModsInitialized">
            <summary>Whether all mods have been initialized and their <see cref="M:StardewModdingAPI.IMod.Entry(StardewModdingAPI.IModHelper)"/> method called.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModRegistry.Add(StardewModdingAPI.Framework.IModMetadata)">
            <summary>Register a mod.</summary>
            <param name="metadata">The mod metadata.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModRegistry.TrackAssemblies(StardewModdingAPI.Framework.IModMetadata,System.Reflection.Assembly)">
            <summary>Track a mod's assembly for use via <see cref="M:StardewModdingAPI.Framework.ModRegistry.GetFrom(System.Type)"/>.</summary>
            <param name="metadata">The mod metadata.</param>
            <param name="modAssembly">The mod assembly.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModRegistry.GetAll(System.Boolean,System.Boolean)">
            <summary>Get metadata for all loaded mods.</summary>
            <param name="assemblyMods">Whether to include SMAPI mods.</param>
            <param name="contentPacks">Whether to include content pack mods.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModRegistry.Get(System.String)">
            <summary>Get metadata for a loaded mod.</summary>
            <param name="uniqueID">The mod's unique ID.</param>
            <returns>Returns the mod's metadata, or <c>null</c> if not found.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModRegistry.GetFrom(System.Type)">
            <summary>Get the mod metadata from one of its assemblies.</summary>
            <param name="type">The type to check.</param>
            <returns>Returns the mod's metadata, or <c>null</c> if the type isn't part of a known mod.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModRegistry.GetFrom(System.Diagnostics.StackFrame)">
            <summary>Get the mod metadata from a stack frame, if any.</summary>
            <param name="frame">The stack frame to check.</param>
            <returns>Returns the mod's metadata, or <c>null</c> if the frame isn't part of a known mod.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.ModRegistry.GetFromStack(System.Diagnostics.StackFrame[])">
            <summary>Get the mod metadata from the closest assembly registered as a source of deprecation warnings.</summary>
            <param name="frames">The call stack to analyze.</param>
            <returns>Returns the mod's metadata, or <c>null</c> if no registered assemblies were found.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.Monitor">
            <summary>Encapsulates monitoring and logic for a given module.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Monitor.Source">
            <summary>The name of the module which logs messages using this instance.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Monitor.ConsoleWriter">
            <summary>Handles writing text to the console.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Monitor.LogFile">
            <summary>The log file to which to write messages.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Monitor.MaxLevelLength">
            <summary>The maximum length of the <see cref="T:StardewModdingAPI.LogLevel"/> values.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Monitor.LogStrings">
            <summary>The cached representation for each level when added to a log header.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Monitor.LogOnceCache">
            <summary>A cache of messages that should only be logged once.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Monitor.GetScreenIdForLog">
            <summary>Get the screen ID that should be logged to distinguish between players in split-screen mode, if any.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Monitor.ForceLogContext">
            <summary>Whether to log basic contextual info (like buttons pressed and menus opened) even if <see cref="P:StardewModdingAPI.Framework.Monitor.IsVerbose"/> is disabled.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Monitor.ContextLogLevel">
            <summary>The current log level for contextual info that's relevant to the <see cref="P:StardewModdingAPI.Framework.Monitor.ForceLogContext"/> flag.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Monitor.IsVerbose">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Monitor.ShowFullStampInConsole">
            <summary>Whether to show the full log stamps (with time/level/logger) in the console. If false, shows a simplified stamp with only the logger.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Monitor.ShowTraceInConsole">
            <summary>Whether to show trace messages in the console.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Monitor.WriteToConsole">
            <summary>Whether to write anything to the console. This should be disabled if no console is available.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.#ctor(System.String,StardewModdingAPI.Framework.Logging.LogFileManager,StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig,System.Boolean,System.Func{System.Nullable{System.Int32}})">
            <summary>Construct an instance.</summary>
            <param name="source">The name of the module which logs messages using this instance.</param>
            <param name="logFile">The log file to which to write messages.</param>
            <param name="colorConfig">The colors to use for text written to the SMAPI console.</param>
            <param name="isVerbose">Whether verbose logging is enabled. This enables more detailed diagnostic messages than are normally needed.</param>
            <param name="getScreenIdForLog">Get the screen ID that should be logged to distinguish between players in split-screen mode, if any.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.Log(System.String,StardewModdingAPI.LogLevel)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.LogOnce(System.String,StardewModdingAPI.LogLevel)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.VerboseLog(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.VerboseLog(StardewModdingAPI.Framework.Logging.VerboseLogStringHandler@)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.Newline">
            <summary>Write a newline to the console and log file.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.LogFatal(System.String)">
            <summary>Log a fatal error message.</summary>
            <param name="message">The message to log.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.LogUserInput(System.String)">
            <summary>Log console input from the user.</summary>
            <param name="input">The user input to log.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.LogImpl(System.String,System.String,StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel)">
            <summary>Write a message line to the log.</summary>
            <param name="source">The name of the mod logging the message.</param>
            <param name="message">The message to log.</param>
            <param name="level">The log level.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Monitor.GenerateMessagePrefix(System.String,StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel)">
            <summary>Generate a message prefix for the current time.</summary>
            <param name="source">The name of the mod logging the message.</param>
            <param name="level">The log level.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Networking.MessageType">
            <summary>Network message types recognized by SMAPI and Stardew Valley.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Networking.MessageType.ModMessage">
            <summary>A data message intended for mods to consume.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Networking.MessageType.ModContext">
            <summary>Metadata context about a player synced by SMAPI.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Networking.MessageType.ServerIntroduction">
            <summary>Metadata about the host server sent to a farmhand.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Networking.MessageType.PlayerIntroduction">
            <summary>Metadata about a player sent to a farmhand or server.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Networking.ModMessageModel">
            <summary>The metadata for a mod message.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.ModMessageModel.FromPlayerID">
            <summary>The unique ID of the player who broadcast the message.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.ModMessageModel.FromModID">
            <summary>The unique ID of the mod which broadcast the message.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.ModMessageModel.ToPlayerIDs">
            <summary>The players who should receive the message.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.ModMessageModel.ToModIDs">
            <summary>The mods which should receive the message, or <c>null</c> for all mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.ModMessageModel.Type">
            <summary>A message type which receiving mods can use to decide whether it's the one they want to handle, like <c>SetPlayerLocation</c>. This doesn't need to be globally unique, since mods should check the originating mod ID.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.ModMessageModel.Data">
            <summary>The custom mod data being broadcast.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.ModMessageModel.#ctor(System.Int64,System.String,System.Int64[],System.String[],System.String,Newtonsoft.Json.Linq.JToken)">
            <summary>Construct an instance.</summary>
            <param name="fromPlayerID">The unique ID of the player who broadcast the message.</param>
            <param name="fromModID">The unique ID of the mod which broadcast the message.</param>
            <param name="toPlayerIDs">The players who should receive the message, or <c>null</c> for all players.</param>
            <param name="toModIDs">The mods which should receive the message, or <c>null</c> for all mods.</param>
            <param name="type">A message type which receiving mods can use to decide whether it's the one they want to handle, like <c>SetPlayerLocation</c>. This doesn't need to be globally unique, since mods should check the originating mod ID.</param>
            <param name="data">The custom mod data being broadcast.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.ModMessageModel.#ctor(StardewModdingAPI.Framework.Networking.ModMessageModel)">
            <summary>Construct an instance.</summary>
            <param name="message">The message to clone.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Networking.MultiplayerPeer">
            <summary>Metadata about a connected player.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Networking.MultiplayerPeer.SendMessageImpl">
            <summary>A method which sends a message to the peer.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.PlayerID">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.IsHost">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.IsSplitScreen">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.HasSmapi">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.ScreenID">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.Platform">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.GameVersion">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.ApiVersion">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeer.Mods">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.MultiplayerPeer.#ctor(System.Int64,System.Nullable{System.Int32},StardewModdingAPI.Framework.Networking.RemoteContextModel,System.Action{StardewValley.Network.OutgoingMessage},System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="playerID">The player's unique ID.</param>
            <param name="screenID">The player's screen ID, if applicable.</param>
            <param name="model">The metadata to copy.</param>
            <param name="sendMessage">A method which sends a message to the peer.</param>
            <param name="isHost">Whether this is a connection to the host player.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.MultiplayerPeer.GetMod(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.MultiplayerPeer.SendMessage(StardewValley.Network.OutgoingMessage)">
            <summary>Send a message to the given peer, bypassing the game's normal validation to allow messages before the connection is approved.</summary>
            <param name="message">The message to send.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeerMod.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeerMod.ID">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.MultiplayerPeerMod.Version">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.MultiplayerPeerMod.#ctor(StardewModdingAPI.Framework.Networking.RemoteContextModModel)">
            <summary>Construct an instance.</summary>
            <param name="mod">The mod metadata.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Networking.RemoteContextModel">
            <summary>Metadata about the game, SMAPI, and installed mods exchanged with connected computers.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModel.IsHost">
            <summary>Whether this player is the host player.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModel.Platform">
            <summary>The game's platform.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModel.GameVersion">
            <summary>The installed version of Stardew Valley.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModel.ApiVersion">
            <summary>The installed version of SMAPI.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModel.Mods">
            <summary>The installed mods.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.RemoteContextModel.#ctor(System.Boolean,StardewModdingAPI.GamePlatform,StardewModdingAPI.ISemanticVersion,StardewModdingAPI.ISemanticVersion,StardewModdingAPI.Framework.Networking.RemoteContextModModel[])">
            <summary>Construct an instance.</summary>
            <param name="isHost">Whether this player is the host player.</param>
            <param name="platform">The game's platform.</param>
            <param name="gameVersion">The installed version of Stardew Valley.</param>
            <param name="apiVersion">The installed version of SMAPI.</param>
            <param name="mods">The installed mods.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Networking.RemoteContextModModel">
            <summary>Metadata about an installed mod exchanged with connected computers.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModModel.ID">
            <summary>The unique mod ID.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModModel.Name">
            <summary>The mod's display name.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Networking.RemoteContextModModel.Version">
            <summary>The mod version.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Networking.RemoteContextModModel.#ctor(System.String,System.String,StardewModdingAPI.ISemanticVersion)">
            <summary>Construct an instance.</summary>
            <param name="id">The unique mod ID.</param>
            <param name="name">The mod's display name.</param>
            <param name="version">The mod version.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Reflection.IInterfaceProxyFactory">
            <summary>Generates proxy classes to access mod APIs through an arbitrary interface.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.IInterfaceProxyFactory.CreateProxy``1(System.Object,System.String,System.String)">
            <summary>Create an API proxy.</summary>
            <typeparam name="TInterface">The interface through which to access the API.</typeparam>
            <param name="instance">The API instance to access.</param>
            <param name="sourceModID">The unique ID of the mod consuming the API.</param>
            <param name="targetModID">The unique ID of the mod providing the API.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Reflection.InterfaceProxyFactory">
            <inheritdoc />
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.InterfaceProxyFactory.ProxyManager">
            <summary>The underlying proxy type builder.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.InterfaceProxyFactory.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.InterfaceProxyFactory.CreateProxy``1(System.Object,System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Reflection.ReflectedField`1">
            <summary>A field obtained through reflection.</summary>
            <typeparam name="TValue">The field value type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.ReflectedField`1.ParentType">
            <summary>The type that has the field.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.ReflectedField`1.Parent">
            <summary>The object that has the instance field, or <c>null</c> for a static field.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Reflection.ReflectedField`1.DisplayName">
            <summary>The display name shown in error messages.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Reflection.ReflectedField`1.FieldInfo">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedField`1.#ctor(System.Type,System.Object,System.Reflection.FieldInfo,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="parentType">The type that has the field.</param>
            <param name="obj">The object that has the instance field, or <c>null</c> for a static field.</param>
            <param name="field">The reflection metadata.</param>
            <param name="isStatic">Whether the field is static.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="parentType"/> or <paramref name="field"/> is null.</exception>
            <exception cref="T:System.ArgumentException">The <paramref name="obj"/> is null for a non-static field, or not null for a static field.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedField`1.GetValue">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedField`1.SetValue(`0)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Reflection.ReflectedMethod">
            <summary>A method obtained through reflection.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.ReflectedMethod.ParentType">
            <summary>The type that has the method.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.ReflectedMethod.Parent">
            <summary>The object that has the instance method, or <c>null</c> for a static method.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Reflection.ReflectedMethod.DisplayName">
            <summary>The display name shown in error messages.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Reflection.ReflectedMethod.MethodInfo">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedMethod.#ctor(System.Type,System.Object,System.Reflection.MethodInfo,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="parentType">The type that has the method.</param>
            <param name="obj">The object that has the instance method, or <c>null</c> for a static method.</param>
            <param name="method">The reflection metadata.</param>
            <param name="isStatic">Whether the method is static.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="parentType"/> or <paramref name="method"/> is null.</exception>
            <exception cref="T:System.ArgumentException">The <paramref name="obj"/> is null for a non-static method, or not null for a static method.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedMethod.Invoke``1(System.Object[])">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedMethod.Invoke(System.Object[])">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1">
            <summary>A property obtained through reflection.</summary>
            <typeparam name="TValue">The property value type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1.DisplayName">
            <summary>The display name shown in error messages.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1.GetMethod">
            <summary>The underlying property getter.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1.SetMethod">
            <summary>The underlying property setter.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1.PropertyInfo">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1.#ctor(System.Type,System.Object,System.Reflection.PropertyInfo,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="parentType">The type that has the property.</param>
            <param name="obj">The object that has the instance property, or <c>null</c> for a static property.</param>
            <param name="property">The reflection metadata.</param>
            <param name="isStatic">Whether the property is static.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="parentType"/> or <paramref name="property"/> is null.</exception>
            <exception cref="T:System.ArgumentException">The <paramref name="obj"/> is null for a non-static property, or not null for a static property.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1.GetValue">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.ReflectedProperty`1.SetValue(`0)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.Reflection.Reflector">
            <summary>Provides helper methods for accessing inaccessible code.</summary>
            <remarks>This implementation searches up the type hierarchy, and caches the reflected fields and methods with a sliding expiry (to optimize performance without unnecessary memory usage).</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.Reflection.Reflector.Cache">
            <summary>The cached fields and methods found via reflection.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetField``1(System.Object,System.String,System.Boolean)">
            <summary>Get a instance field.</summary>
            <typeparam name="TValue">The field type.</typeparam>
            <param name="obj">The object which has the field.</param>
            <param name="name">The field name.</param>
            <param name="required">Whether to throw an exception if the field isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the value non-nullable.</strong></param>
            <returns>Returns the field wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the field doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target field doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetField``1(System.Type,System.String,System.Boolean)">
            <summary>Get a static field.</summary>
            <typeparam name="TValue">The field type.</typeparam>
            <param name="type">The type which has the field.</param>
            <param name="name">The field name.</param>
            <param name="required">Whether to throw an exception if the field isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the value non-nullable.</strong></param>
            <returns>Returns the field wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the field doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target field doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetProperty``1(System.Object,System.String,System.Boolean)">
            <summary>Get a instance property.</summary>
            <typeparam name="TValue">The property type.</typeparam>
            <param name="obj">The object which has the property.</param>
            <param name="name">The property name.</param>
            <param name="required">Whether to throw an exception if the property isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the value non-nullable.</strong></param>
            <returns>Returns the property wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the property doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target property doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetProperty``1(System.Type,System.String,System.Boolean)">
            <summary>Get a static property.</summary>
            <typeparam name="TValue">The property type.</typeparam>
            <param name="type">The type which has the property.</param>
            <param name="name">The property name.</param>
            <param name="required">Whether to throw an exception if the property isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the value non-nullable.</strong></param>
            <returns>Returns the property wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the property doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target property doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetMethod(System.Object,System.String,System.Boolean)">
            <summary>Get a instance method.</summary>
            <param name="obj">The object which has the method.</param>
            <param name="name">The method name.</param>
            <param name="required">Whether to throw an exception if the method isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the method doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target method doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetMethod(System.Type,System.String,System.Boolean)">
            <summary>Get a static method.</summary>
            <param name="type">The type which has the method.</param>
            <param name="name">The method name.</param>
            <param name="required">Whether to throw an exception if the method isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the method doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target method doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.NewCacheInterval">
            <summary>Start a new cache interval, clearing stale reflection lookups.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetFieldFromHierarchy``1(System.Type,System.Object,System.String,System.Reflection.BindingFlags)">
            <summary>Get a field from the type hierarchy.</summary>
            <typeparam name="TValue">The expected field type.</typeparam>
            <param name="type">The type which has the field.</param>
            <param name="obj">The object which has the field, or <c>null</c> for a static field.</param>
            <param name="name">The field name.</param>
            <param name="bindingFlags">The reflection binding which flags which indicates what type of field to find.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetPropertyFromHierarchy``1(System.Type,System.Object,System.String,System.Reflection.BindingFlags)">
            <summary>Get a property from the type hierarchy.</summary>
            <typeparam name="TValue">The expected property type.</typeparam>
            <param name="type">The type which has the property.</param>
            <param name="obj">The object which has the property, or <c>null</c> for a static property.</param>
            <param name="name">The property name.</param>
            <param name="bindingFlags">The reflection binding which flags which indicates what type of property to find.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetMethodFromHierarchy(System.Type,System.Object,System.String,System.Reflection.BindingFlags)">
            <summary>Get a method from the type hierarchy.</summary>
            <param name="type">The type which has the method.</param>
            <param name="obj">The object which has the method, or <c>null</c> for a static method.</param>
            <param name="name">The method name.</param>
            <param name="bindingFlags">The reflection binding which flags which indicates what type of method to find.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Reflection.Reflector.GetCached``1(System.Char,System.Type,System.String,System.Boolean,System.Func{``0})">
            <summary>Get a method or field through the cache.</summary>
            <typeparam name="TMemberInfo">The expected <see cref="T:System.Reflection.MemberInfo"/> type.</typeparam>
            <param name="memberType">A letter representing the member type (like 'm' for method).</param>
            <param name="type">The type whose members are being reflected.</param>
            <param name="memberName">The member name.</param>
            <param name="isStatic">Whether the member is static.</param>
            <param name="fetch">Fetches a new value to cache.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Rendering.SDisplayDevice">
            <summary>A map display device which overrides the draw logic to support tile rotation.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SDisplayDevice.#ctor(Microsoft.Xna.Framework.Content.ContentManager,Microsoft.Xna.Framework.Graphics.GraphicsDevice)">
            <summary>Construct an instance.</summary>
            <param name="contentManager">The content manager through which to load tiles.</param>
            <param name="graphicsDevice">The graphics device with which to render tiles.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SDisplayDevice.DrawTile(xTile.Tiles.Tile,xTile.Dimensions.Location,System.Single)">
            <summary>Draw a tile to the screen.</summary>
            <param name="tile">The tile to draw.</param>
            <param name="location">The tile position to draw.</param>
            <param name="layerDepth">The layer depth at which to draw.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SDisplayDevice.GetSpriteEffects(xTile.Tiles.Tile)">
            <summary>Get the sprite effects to apply for a tile.</summary>
            <param name="tile">The tile being drawn.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SDisplayDevice.GetRotation(xTile.Tiles.Tile)">
            <summary>Get the draw rotation to apply for a tile.</summary>
            <param name="tile">The tile being drawn.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice">
            <summary>A map display device which reimplements the default logic.</summary>
            <remarks>This is an exact copy of <see cref="T:xTile.Display.XnaDisplayDevice"/>, except that private fields are protected and all methods are virtual.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.#ctor(Microsoft.Xna.Framework.Content.ContentManager,Microsoft.Xna.Framework.Graphics.GraphicsDevice)">
            <summary>Construct an instance.</summary>
            <param name="contentManager">The content manager through which to load tiles.</param>
            <param name="graphicsDevice">The graphics device with which to render tiles.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.LoadTileSheet(xTile.Tiles.TileSheet)">
            <summary>Load a tilesheet texture.</summary>
            <param name="tileSheet">The tilesheet instance.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.DisposeTileSheet(xTile.Tiles.TileSheet)">
            <summary>Unload a tilesheet texture.</summary>
            <param name="tileSheet">The tilesheet instance.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.BeginScene(Microsoft.Xna.Framework.Graphics.SpriteBatch)">
            <summary>Prepare to render to the screen.</summary>
            <param name="b">The sprite batch being rendered.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.SetClippingRegion(xTile.Dimensions.Rectangle)">
            <summary>Set the clipping region.</summary>
            <param name="clippingRegion">The clipping region.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.DrawTile(xTile.Tiles.Tile,xTile.Dimensions.Location,System.Single)">
            <summary>Draw a tile to the screen.</summary>
            <param name="tile">The tile to draw.</param>
            <param name="location">The tile position to draw.</param>
            <param name="layerDepth">The layer depth at which to draw.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.EndScene">
            <summary>Finish drawing to the screen.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Rendering.SXnaDisplayDevice.Clamp(System.Int32,System.Int32,System.Int32)">
            <summary>Snap a value to the given range.</summary>
            <param name="nValue">The value to normalize.</param>
            <param name="nMin">The minimum value.</param>
            <param name="nMax">The maximum value.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.SChatBox">
            <summary>SMAPI's implementation of the chat box which intercepts errors for logging.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SChatBox.Monitor">
            <summary>Encapsulates monitoring and logging.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SChatBox.#ctor(StardewModdingAPI.IMonitor)">
            <summary>Construct an instance.</summary>
            <param name="monitor">Encapsulates monitoring and logging.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SChatBox.runCommand(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SChatBox.receiveChatMessage(System.Int64,System.Int32,StardewValley.LocalizedContentManager.LanguageCode,System.String)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.SCore">
            <summary>The core class which initializes and manages SMAPI.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.ExitState">
            <summary>A state which indicates whether SMAPI should exit immediately and any pending initialization should be cancelled.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.IsExiting">
            <summary>Whether the game should exit immediately and any pending initialization should be cancelled.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.LogManager">
            <summary>Manages the SMAPI console window and log file.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.Monitor">
            <summary>The core logger and monitor for SMAPI.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.Reflection">
            <summary>Simplifies access to private game code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.Translator">
            <summary>Encapsulates access to SMAPI core translations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.Settings">
            <summary>The SMAPI configuration settings.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.Toolkit">
            <summary>The mod toolkit used for generic mod interactions.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.CommandManager">
            <summary>Manages console commands.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.Game">
            <summary>The underlying game instance.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.ContentCore">
            <summary>SMAPI's content manager.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.Multiplayer">
            <summary>The game's core multiplayer utility for the main player.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.ModRegistry">
            <summary>Tracks the installed mods.</summary>
            <remarks>This is initialized after the game starts.</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.EventManager">
            <summary>Manages SMAPI events for mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.ModsPath">
            <summary>The path to search for mods.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.IsGameRunning">
            <summary>Whether the game is currently running.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.IsDisposed">
            <summary>Whether the program has been disposed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.NextContentManagerIsMain">
            <summary>Whether the next content manager requested by the game will be for <see cref="F:StardewValley.Game1.content"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.IsInitialized">
            <summary>Whether post-game-startup initialization has been performed.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.AreCustomLanguagesInitialized">
            <summary>Whether the game has initialized for any custom languages from <c>Data/AdditionalLanguages</c>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.JustReturnedToTitle">
            <summary>Whether the player just returned to the title screen.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.LastLanguage">
            <summary>The last language set by the game.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.UpdateCrashTimer">
            <summary>The maximum number of consecutive attempts SMAPI should make to recover from an update error.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.RawCommandQueue">
            <summary>A list of queued commands to parse and execute.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.ScreenCommandQueue">
            <summary>A list of commands to execute on each screen.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SCore.LastRenderEventTick">
            <summary>The last <see cref="P:StardewModdingAPI.Framework.SCore.ProcessTicksElapsed"/> for which display events were raised.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.DeprecationManager">
            <summary>Manages deprecation warnings.</summary>
            <remarks>This is initialized after the game starts. This is accessed directly because it's not part of the normal class model.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.Instance">
            <summary>The singleton instance.</summary>
            <remarks>This is only intended for use by external code.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.TicksElapsed">
            <summary>The number of game update ticks which have already executed. This is similar to <see cref="F:StardewValley.Game1.ticks"/>, but incremented more consistently for every tick.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.ProcessTicksElapsed">
            <summary>A specialized form of <see cref="P:StardewModdingAPI.Framework.SCore.TicksElapsed"/> which is incremented each time SMAPI performs a processing tick (whether that's a game update, one wait cycle while synchronizing code, etc).</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.#ctor(System.String,System.Boolean,System.Nullable{System.Boolean})">
            <summary>Construct an instance.</summary>
            <param name="modsPath">The path to search for mods.</param>
            <param name="writeToConsole">Whether to output log messages to the console.</param>
            <param name="developerMode">Whether to enable development features, or <c>null</c> to use the value from the settings file.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.RunInteractively">
            <summary>Launch SMAPI.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.GetMonitorForGame">
            <summary>Get the core logger and monitor on behalf of the game.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.Dispose">
            <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.Dispose(System.Boolean)">
            <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary>
            <param name="isError">Whether the process is exiting due to an error or crash.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.InitializeBeforeFirstAssetLoaded">
            <summary>Initialize mods before the first game asset is loaded. At this point the core content managers are loaded (so mods can load their own assets), but the game is mostly uninitialized.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnGameInitialized">
            <summary>Raised after the game finishes initializing.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnInstanceContentLoaded">
            <summary>Raised after an instance finishes loading its initial content.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnGameUpdating(Microsoft.Xna.Framework.GameTime,System.Action)">
            <summary>Raised when the game is updating its state (roughly 60 times per second).</summary>
            <param name="gameTime">A snapshot of the game timing state.</param>
            <param name="runGameUpdate">Invoke the game's update logic.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(StardewModdingAPI.Framework.SGame,Microsoft.Xna.Framework.GameTime,System.Action)">
            <summary>Raised when the game instance for a local player is updating (once per <see cref="M:StardewModdingAPI.Framework.SCore.OnGameUpdating(Microsoft.Xna.Framework.GameTime,System.Action)"/> per player).</summary>
            <param name="instance">The game instance being updated.</param>
            <param name="gameTime">A snapshot of the game timing state.</param>
            <param name="runUpdate">Invoke the game's update logic.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnLocaleChanged">
            <summary>Handle the game changing locale.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnLoadStageChanged(StardewModdingAPI.Enums.LoadStage)">
            <summary>Raised when the low-level stage while loading a save changes.</summary>
            <param name="newStage">The new load stage.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnRenderingStep(StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <summary>Raised when the game starts a render step in the draw loop.</summary>
            <param name="step">The render step being started.</param>
            <param name="spriteBatch">The sprite batch being drawn (which might not always be open yet).</param>
            <param name="renderTarget">The render target being drawn.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnRenderedStep(StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <summary>Raised when the game finishes a render step in the draw loop.</summary>
            <param name="step">The render step being started.</param>
            <param name="spriteBatch">The sprite batch being drawn (which might not always be open yet).</param>
            <param name="renderTarget">The render target being drawn.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnRendered(Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <summary>Raised after an instance finishes a draw loop.</summary>
            <param name="renderTarget">The render target being drawn to the screen.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.RaiseRenderEvent``1(StardewModdingAPI.Framework.Events.ManagedEvent{``0},Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <summary>Raise a rendering/rendered event, temporarily opening the given sprite batch if needed to let mods draw to it.</summary>
            <typeparam name="TEventArgs">The event args type to construct.</typeparam>
            <param name="event">The event to raise.</param>
            <param name="spriteBatch">The sprite batch being drawn to the screen.</param>
            <param name="renderTarget">The render target being drawn to the screen.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.RaiseRenderEvent``1(StardewModdingAPI.Framework.Events.ManagedEvent{``0},Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.Graphics.RenderTarget2D,``0)">
            <summary>Raise a rendering/rendered event, temporarily opening the given sprite batch if needed to let mods draw to it.</summary>
            <typeparam name="TEventArgs">The event args type to construct.</typeparam>
            <param name="event">The event to raise.</param>
            <param name="spriteBatch">The sprite batch being drawn to the screen.</param>
            <param name="renderTarget">The render target being drawn to the screen.</param>
            <param name="eventArgs">The event arguments to pass to the event.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnNewDayAfterFade">
            <summary>A callback invoked before <see cref="M:StardewValley.Game1.newDayAfterFade(System.Action)"/> runs.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnAssetLoaded(StardewModdingAPI.Framework.ContentManagers.IContentManager,StardewModdingAPI.IAssetName)">
            <summary>A callback invoked after an asset is fully loaded through a content manager.</summary>
            <param name="contentManager">The content manager through which the asset was loaded.</param>
            <param name="assetName">The asset name that was loaded.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnAssetsInvalidated(System.Collections.Generic.IList{StardewModdingAPI.IAssetName})">
            <summary>A callback invoked after assets have been invalidated from the content cache.</summary>
            <param name="assetNames">The invalidated asset names.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.RequestAssetOperations(StardewModdingAPI.IAssetInfo)">
            <summary>Get the load/edit operations to apply to an asset by querying registered <see cref="E:StardewModdingAPI.Events.IContentEvents.AssetRequested"/> event handlers.</summary>
            <param name="asset">The asset info being requested.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.GetOnBehalfOfContentPack(StardewModdingAPI.Framework.IModMetadata,System.String,System.String)">
            <summary>Get the mod metadata for a content pack whose ID matches <paramref name="id"/>, if it's a valid content pack for the given <paramref name="mod"/>.</summary>
            <param name="mod">The mod requesting to act on the content pack's behalf.</param>
            <param name="id">The content pack ID.</param>
            <param name="verb">The verb phrase indicating what action will be performed, like 'load assets' or 'edit assets'.</param>
            <returns>Returns the content pack metadata if valid, else <c>null</c>.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnReturningToTitle">
            <summary>Raised immediately before the player returns to the title screen.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnGameExiting">
            <summary>Raised before the game exits.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.OnModMessageReceived(StardewModdingAPI.Framework.Networking.ModMessageModel)">
            <summary>Raised when a mod network message is received.</summary>
            <param name="message">The message to deliver to applicable mods.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.CreateContentManager(System.IServiceProvider,System.String)">
            <summary>Constructor a content manager to read game content files.</summary>
            <param name="serviceProvider">The service provider to use to locate services.</param>
            <param name="rootDirectory">The root directory to search for content.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.GetCurrentGameInstance">
            <summary>Get the current game instance. This may not be the main player if playing in split-screen.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.UpdateWindowTitles">
            <summary>Set the titles for the game and console windows.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.CheckForSoftwareConflicts">
            <summary>Log a warning if software known to cause issues is installed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.CheckForUpdatesAsync(StardewModdingAPI.Framework.IModMetadata[])">
            <summary>Asynchronously check for a new version of SMAPI and any installed mods, and print alerts to the console if an update is available.</summary>
            <param name="mods">The mods to include in the update check (if eligible).</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.VerifyPath(System.String)">
            <summary>Create a directory path if it doesn't exist.</summary>
            <param name="path">The directory path.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.LoadMods(StardewModdingAPI.Framework.IModMetadata[],StardewModdingAPI.Toolkit.Serialization.JsonHelper,StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.Toolkit.Framework.ModData.ModDatabase)">
            <summary>Load and hook up the given mods.</summary>
            <param name="mods">The mods to load.</param>
            <param name="jsonHelper">The JSON helper with which to read mods' JSON files.</param>
            <param name="contentCore">The content manager to use for mod content.</param>
            <param name="modDatabase">Handles access to SMAPI's internal mod metadata list.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.TryLoadMod(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.IModMetadata[],StardewModdingAPI.Framework.ModLoading.AssemblyLoader,StardewModdingAPI.Framework.Reflection.IInterfaceProxyFactory,StardewModdingAPI.Toolkit.Serialization.JsonHelper,StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.Toolkit.Framework.ModData.ModDatabase,System.Collections.Generic.HashSet{System.String},System.Nullable{StardewModdingAPI.Framework.ModLoading.ModFailReason}@,System.String@,System.String@)">
            <summary>Load a given mod.</summary>
            <param name="mod">The mod to load.</param>
            <param name="mods">The mods being loaded.</param>
            <param name="assemblyLoader">Preprocesses and loads mod assemblies.</param>
            <param name="proxyFactory">Generates proxy classes to access mod APIs through an arbitrary interface.</param>
            <param name="jsonHelper">The JSON helper with which to read mods' JSON files.</param>
            <param name="contentCore">The content manager to use for mod content.</param>
            <param name="modDatabase">Handles access to SMAPI's internal mod metadata list.</param>
            <param name="suppressUpdateChecks">The mod IDs to ignore when validating update keys.</param>
            <param name="failReason">The reason the mod couldn't be loaded, if applicable.</param>
            <param name="errorReasonPhrase">The user-facing reason phrase explaining why the mod couldn't be loaded (if applicable).</param>
            <param name="errorDetails">More detailed info about the error intended for developers (if any).</param>
            <returns>Returns whether the mod was successfully loaded.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.CreateFakeContentPack(System.String,StardewModdingAPI.IManifest,StardewModdingAPI.Framework.ContentCoordinator,StardewModdingAPI.Framework.IModMetadata)">
            <summary>Create a fake content pack instance for a parent mod.</summary>
            <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="parentMod">The mod for which the content pack is being created.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.TryLoadModEntry(StardewModdingAPI.Framework.IModMetadata,System.Reflection.Assembly,StardewModdingAPI.Mod@,System.String@)">
            <summary>Load a mod's entry class.</summary>
            <param name="metadata">The mod metadata whose entry class is being loaded.</param>
            <param name="modAssembly">The mod assembly.</param>
            <param name="mod">The loaded instance.</param>
            <param name="error">The error indicating why loading failed (if applicable).</param>
            <returns>Returns whether the mod entry class was successfully loaded.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.ReloadTranslations">
            <summary>Reload translations for all mods.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.ReloadTranslations(System.Collections.Generic.IEnumerable{StardewModdingAPI.Framework.IModMetadata})">
            <summary>Reload translations for the given mods.</summary>
            <param name="mods">The mods for which to reload translations.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.ReloadTranslationsForTemporaryContentPack(StardewModdingAPI.Framework.IModMetadata,StardewModdingAPI.Framework.ContentPack)">
            <summary>Load or reload translations for a temporary content pack created by a mod.</summary>
            <param name="parentMod">The parent mod which created the content pack.</param>
            <param name="contentPack">The content pack instance.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.ReadTranslationFiles(System.String,System.Collections.Generic.IList{System.String}@)">
            <summary>Read translations from a directory containing JSON translation files.</summary>
            <param name="folderPath">The folder path to search.</param>
            <param name="errors">The errors indicating why translation files couldn't be parsed, indexed by translation filename.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.GetFileLookup(System.String)">
            <summary>Get a file lookup for the given directory.</summary>
            <param name="rootDirectory">The root path to scan.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.GetMapDisplayDevice">
            <summary>Get the map display device which applies SMAPI features like tile rotation to loaded maps.</summary>
            <remarks>This is separate to let mods like PyTK wrap it with their own functionality.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.GetLogPath">
            <summary>Get the absolute path to the next available log file.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.PurgeNormalLogs">
            <summary>Delete normal (non-crash) log files created by SMAPI.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.ExitGameImmediately(System.String)">
            <summary>Immediately exit the game without saving. This should only be invoked when an irrecoverable fatal error happens that risks save corruption or game-breaking bugs.</summary>
            <param name="message">The fatal log message.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.GetScreenIdForLog">
            <summary>Get the screen ID that should be logged to distinguish between players in split-screen mode, if any.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.SCore.QueuedCommand">
            <summary>A queued console command to run during the update loop.</summary>
            <param name="Command">The command which can handle the input.</param>
            <param name="Name">The parsed command name.</param>
            <param name="Args">The parsed command arguments.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SCore.QueuedCommand.#ctor(StardewModdingAPI.Framework.Command,System.String,System.String[])">
            <summary>A queued console command to run during the update loop.</summary>
            <param name="Command">The command which can handle the input.</param>
            <param name="Name">The parsed command name.</param>
            <param name="Args">The parsed command arguments.</param>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.QueuedCommand.Command">
            <summary>The command which can handle the input.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.QueuedCommand.Name">
            <summary>The parsed command name.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SCore.QueuedCommand.Args">
            <summary>The parsed command arguments.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Serialization.ColorConverter">
            <summary>Handles deserialization of <see cref="T:Microsoft.Xna.Framework.Color"/> for crossplatform compatibility.</summary>
            <remarks>
            - Linux/macOS format: { "B": 76, "G": 51, "R": 25, "A": 102 }
            - Windows format:   "26, 51, 76, 102"
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.ColorConverter.ReadObject(Newtonsoft.Json.Linq.JObject,System.String)">
            <summary>Read a JSON object.</summary>
            <param name="obj">The JSON object to read.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.ColorConverter.ReadString(System.String,System.String)">
            <summary>Read a JSON string.</summary>
            <param name="str">The JSON string value.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Serialization.KeybindConverter">
            <summary>Handles deserialization of <see cref="T:StardewModdingAPI.Utilities.Keybind"/> and <see cref="T:StardewModdingAPI.Utilities.KeybindList"/> models.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Serialization.KeybindConverter.CanRead">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.Serialization.KeybindConverter.CanWrite">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.KeybindConverter.CanConvert(System.Type)">
            <summary>Get whether this instance can convert the specified object type.</summary>
            <param name="objectType">The object type.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.KeybindConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)">
            <summary>Reads the JSON representation of the object.</summary>
            <param name="reader">The JSON reader.</param>
            <param name="objectType">The object type.</param>
            <param name="existingValue">The object being read.</param>
            <param name="serializer">The calling serializer.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.KeybindConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
            <summary>Writes the JSON representation of the object.</summary>
            <param name="writer">The JSON writer.</param>
            <param name="value">The value.</param>
            <param name="serializer">The calling serializer.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Serialization.PointConverter">
            <summary>Handles deserialization of <see cref="T:Microsoft.Xna.Framework.Point"/> for crossplatform compatibility.</summary>
            <remarks>
            - Linux/macOS format: { "X": 1, "Y": 2 }
            - Windows format:   "1, 2"
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.PointConverter.ReadObject(Newtonsoft.Json.Linq.JObject,System.String)">
            <summary>Read a JSON object.</summary>
            <param name="obj">The JSON object to read.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.PointConverter.ReadString(System.String,System.String)">
            <summary>Read a JSON string.</summary>
            <param name="str">The JSON string value.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Serialization.RectangleConverter">
            <summary>Handles deserialization of <see cref="T:Microsoft.Xna.Framework.Rectangle"/> for crossplatform compatibility.</summary>
            <remarks>
            - Linux/macOS format: { "X": 1, "Y": 2, "Width": 3, "Height": 4 }
            - Windows format:   "{X:1 Y:2 Width:3 Height:4}"
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.RectangleConverter.ReadObject(Newtonsoft.Json.Linq.JObject,System.String)">
            <summary>Read a JSON object.</summary>
            <param name="obj">The JSON object to read.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.RectangleConverter.ReadString(System.String,System.String)">
            <summary>Read a JSON string.</summary>
            <param name="str">The JSON string value.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Serialization.Vector2Converter">
            <summary>Handles deserialization of <see cref="T:Microsoft.Xna.Framework.Vector2"/> for crossplatform compatibility.</summary>
            <remarks>
            - Linux/macOS format: { "X": 1, "Y": 2 }
            - Windows format:   "1, 2"
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.Vector2Converter.ReadObject(Newtonsoft.Json.Linq.JObject,System.String)">
            <summary>Read a JSON object.</summary>
            <param name="obj">The JSON object to read.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Serialization.Vector2Converter.ReadString(System.String,System.String)">
            <summary>Read a JSON string.</summary>
            <param name="str">The JSON string value.</param>
            <param name="path">The path to the current JSON node.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.SGame">
            <summary>SMAPI's extension of the game's core <see cref="T:StardewValley.Game1"/>, used to inject events.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.Monitor">
            <summary>Encapsulates monitoring and logging for SMAPI.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.DrawCrashTimer">
            <summary>The maximum number of consecutive attempts SMAPI should make to recover from a draw error.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.Reflection">
            <summary>Simplifies access to private game code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.ExitGameImmediately">
            <summary>Immediately exit the game without saving. This should only be invoked when an irrecoverable fatal error happens that risks save corruption or game-breaking bugs.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.InitialInput">
            <summary>The initial override for <see cref="P:StardewModdingAPI.Framework.SGame.Input"/>. This value is null after initialization.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.InitialMultiplayer">
            <summary>The initial override for <see cref="T:StardewValley.Multiplayer"/>. This value is null after initialization.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.OnUpdating">
            <summary>Raised when the instance is updating its state (roughly 60 times per second).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.OnContentLoaded">
            <summary>Raised after the instance finishes loading its initial content.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.OnLoadStageChanged">
            <summary>Raised invoke when the load stage changes through a method like <see cref="M:StardewValley.Game1.CleanupReturningToTitle"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.OnRendered">
            <summary>Raised after the instance finishes a draw loop.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGame.Input">
            <summary>Manages input visible to the game.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGame.Watchers">
            <summary>Monitors the entire game state for changes.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGame.WatcherSnapshot">
            <summary>A snapshot of the current <see cref="P:StardewModdingAPI.Framework.SGame.Watchers"/> state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.IsFirstTick">
            <summary>Whether the current update tick is the first one for this instance.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGame.AfterLoadTimer">
            <summary>The number of ticks until SMAPI should notify mods that the game has loaded.</summary>
            <remarks>Skipping a few frames ensures the game finishes initializing the world before mods try to change it.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGame.IsBetweenSaveEvents">
            <summary>Whether the game is saving and SMAPI has already raised <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.Saving"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGame.IsBetweenCreateEvents">
            <summary>Whether the game is creating the save file and SMAPI has already raised <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.SaveCreating"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGame.PlayerId">
            <summary>The cached <see cref="P:StardewValley.Farmer.UniqueMultiplayerID"/> value for this instance's player.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGame.CreateContentManagerImpl">
            <summary>Construct a content manager to read game content files.</summary>
            <remarks>This must be static because the game accesses it before the <see cref="T:StardewModdingAPI.Framework.SGame"/> constructor is called.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.#ctor(Microsoft.Xna.Framework.PlayerIndex,System.Int32,StardewModdingAPI.Framework.Monitor,StardewModdingAPI.Framework.Reflection.Reflector,StardewModdingAPI.Framework.Input.SInputState,StardewModdingAPI.Framework.SModHooks,StardewValley.Logging.IGameLogger,StardewModdingAPI.Framework.SMultiplayer,System.Action{System.String},System.Action{StardewModdingAPI.Framework.SGame,Microsoft.Xna.Framework.GameTime,System.Action},System.Action,System.Action{StardewModdingAPI.Enums.LoadStage},System.Action{Microsoft.Xna.Framework.Graphics.RenderTarget2D})">
            <summary>Construct an instance.</summary>
            <param name="playerIndex">The player index.</param>
            <param name="instanceIndex">The instance index.</param>
            <param name="monitor">Encapsulates monitoring and logging for SMAPI.</param>
            <param name="reflection">Simplifies access to private game code.</param>
            <param name="input">Manages the game's input state.</param>
            <param name="modHooks">Handles mod hooks provided by the game.</param>
            <param name="gameLogger">The game log output handler.</param>
            <param name="multiplayer">The core multiplayer logic.</param>
            <param name="exitGameImmediately">Immediately exit the game without saving. This should only be invoked when an irrecoverable fatal error happens that risks save corruption or game-breaking bugs.</param>
            <param name="onUpdating">Raised when the instance is updating its state (roughly 60 times per second).</param>
            <param name="onContentLoaded">Raised after the game finishes loading its initial content.</param>
            <param name="onLoadStageChanged">Raised invoke when the load stage changes through a method like <see cref="M:StardewValley.Game1.CleanupReturningToTitle"/>.</param>
            <param name="onRendered">Raised after the instance finishes a draw loop.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.GetInputState(StardewModdingAPI.SButton)">
            <summary>Get the current input state for a button.</summary>
            <param name="button">The button to check.</param>
            <remarks>This is intended for use by <see cref="T:StardewModdingAPI.Utilities.Keybind"/> and shouldn't be used directly in most cases.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.LoadContent">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.CreateContentManager(System.IServiceProvider,System.String)">
            <summary>Construct a content manager to read game content files.</summary>
            <param name="serviceProvider">The service provider to use to locate services.</param>
            <param name="rootDirectory">The root directory to search for content.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.Initialize">
            <summary>Initialize the instance when the game starts.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.loadForNewGame(System.Boolean)">
            <summary>The method called when loading or creating a save.</summary>
            <param name="loadedGame">Whether this is being called from the game's load enumerator.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.Update(Microsoft.Xna.Framework.GameTime)">
            <summary>The method called when the instance is updating its state (roughly 60 times per second).</summary>
            <param name="gameTime">A snapshot of the game timing state.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame._draw(Microsoft.Xna.Framework.GameTime,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <summary>The method called to draw everything to the screen.</summary>
            <param name="gameTime">A snapshot of the game timing state.</param>
            <param name="target_screen">The render target, if any.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGame.CleanupReturningToTitle">
            <summary>The method called when the game is returning to the title screen from a loaded save.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.SGameLogger">
            <summary>Redirects log output from the game code to a SMAPI monitor.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameLogger.Monitor">
            <summary>The monitor to which to log output.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameLogger.#ctor(StardewModdingAPI.IMonitor)">
            <summary>Construct an instance.</summary>
            <param name="monitor">The monitor to which to log output.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameLogger.Verbose(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameLogger.Debug(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameLogger.Info(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameLogger.Warn(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameLogger.Error(System.String,System.Exception)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.SGameRunner">
            <summary>SMAPI's extension of the game's core <see cref="T:StardewValley.GameRunner"/>, used to inject SMAPI components.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.Monitor">
            <summary>Encapsulates monitoring and logging for SMAPI.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.Reflection">
            <summary>Simplifies access to private game code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.ExitGameImmediately">
            <summary>Immediately exit the game without saving. This should only be invoked when an irrecoverable fatal error happens that risks save corruption or game-breaking bugs.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.ModHooks">
            <summary>The core SMAPI mod hooks.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.GameLogger">
            <summary>The game log output handler.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.Multiplayer">
            <summary>The core multiplayer logic.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.OnGameContentLoaded">
            <summary>Raised after the game finishes loading its initial content.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.OnLoadStageChanged">
            <summary>Raised invoke when the load stage changes through a method like <see cref="M:StardewValley.Game1.CleanupReturningToTitle"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.OnGameUpdating">
            <summary>Raised when XNA is updating (roughly 60 times per second).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.OnPlayerInstanceUpdating">
            <summary>Raised when the game instance for a local split-screen player is updating (once per <see cref="F:StardewModdingAPI.Framework.SGameRunner.OnGameUpdating"/> per player).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.OnGameExiting">
            <summary>Raised before the game exits.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SGameRunner.OnPlayerInstanceRendered">
            <summary>Raised after an instance finishes a draw loop.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SGameRunner.Instance">
            <summary>The singleton instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.#ctor(StardewModdingAPI.Framework.Monitor,StardewModdingAPI.Framework.Reflection.Reflector,StardewModdingAPI.Framework.SModHooks,StardewValley.Logging.IGameLogger,StardewModdingAPI.Framework.SMultiplayer,System.Action{System.String},System.Action,System.Action{StardewModdingAPI.Enums.LoadStage},System.Action{Microsoft.Xna.Framework.GameTime,System.Action},System.Action{StardewModdingAPI.Framework.SGame,Microsoft.Xna.Framework.GameTime,System.Action},System.Action,System.Action{Microsoft.Xna.Framework.Graphics.RenderTarget2D})">
            <summary>Construct an instance.</summary>
            <param name="monitor">Encapsulates monitoring and logging for SMAPI.</param>
            <param name="reflection">Simplifies access to private game code.</param>
            <param name="modHooks">Handles mod hooks provided by the game.</param>
            <param name="gameLogger">The game log output handler.</param>
            <param name="multiplayer">The core multiplayer logic.</param>
            <param name="exitGameImmediately">Immediately exit the game without saving. This should only be invoked when an irrecoverable fatal error happens that risks save corruption or game-breaking bugs.</param>
            <param name="onGameContentLoaded">Raised after the game finishes loading its initial content.</param>
            <param name="onLoadStageChanged">Raised invoke when the load stage changes through a method like <see cref="M:StardewValley.Game1.CleanupReturningToTitle"/>.</param>
            <param name="onGameUpdating">Raised when XNA is updating its state (roughly 60 times per second).</param>
            <param name="onPlayerInstanceUpdating">Raised when the game instance for a local split-screen player is updating (once per <see cref="F:StardewModdingAPI.Framework.SGameRunner.OnGameUpdating"/> per player).</param>
            <param name="onPlayerInstanceRendered">Raised after an instance finishes a draw loop.</param>
            <param name="onGameExiting">Raised before the game exits.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.CreateGameInstance(Microsoft.Xna.Framework.PlayerIndex,System.Int32)">
            <summary>Create a game instance for a local player.</summary>
            <param name="playerIndex">The player index.</param>
            <param name="instanceIndex">The instance index.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.AddGameInstance(Microsoft.Xna.Framework.PlayerIndex)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.RemoveGameInstance(StardewValley.Game1)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.GetScreenId(System.Int64)">
            <summary>Get the screen ID for a given player ID, if the player is local.</summary>
            <param name="playerId">The player ID to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.OnExiting(System.Object,System.EventArgs)">
            <summary>Perform cleanup logic when the game exits.</summary>
            <param name="sender">The event sender.</param>
            <param name="args">The event args.</param>
            <remarks>This overrides the logic in <see cref="M:StardewValley.Game1.exitEvent(System.Object,System.EventArgs)"/> to let SMAPI clean up before exit.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.Update(Microsoft.Xna.Framework.GameTime)">
            <summary>The method called when the game is updating its state (roughly 60 times per second).</summary>
            <param name="gameTime">A snapshot of the game timing state.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SGameRunner.UpdateForSplitScreenChanges">
            <summary>Update metadata when a split screen is added or removed.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Singleton`1">
            <summary>Provides singleton instances of a given type.</summary>
            <typeparam name="T">The instance type.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.Framework.Singleton`1.Instance">
            <summary>The singleton instance.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.SModHooks">
            <summary>Invokes callbacks for mod hooks provided by the game.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SModHooks.BeforeNewDayAfterFade">
            <summary>A callback to invoke before <see cref="M:StardewValley.Game1.newDayAfterFade(System.Action)"/> runs.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SModHooks.Monitor">
            <summary>Writes messages to the console.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SModHooks.OnStageChanged">
            <summary>A callback to invoke when the load stage changes.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SModHooks.OnRenderingStep">
            <summary>A callback to invoke when the game starts a render step in the draw loop.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SModHooks.OnRenderedStep">
            <summary>A callback to invoke when the game finishes a render step in the draw loop.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.#ctor(StardewValley.Mods.ModHooks,System.Action,System.Action{StardewModdingAPI.Enums.LoadStage},System.Action{StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.Graphics.RenderTarget2D},System.Action{StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.Graphics.RenderTarget2D},StardewModdingAPI.IMonitor)">
            <summary>Construct an instance.</summary>
            <param name="parent">The underlying hooks to call by default.</param>
            <param name="beforeNewDayAfterFade">A callback to invoke before <see cref="M:StardewValley.Game1.newDayAfterFade(System.Action)"/> runs.</param>
            <param name="onStageChanged">A callback to invoke when the load stage changes.</param>
            <param name="onRenderingStep">A callback to invoke when the game starts a render step in the draw loop.</param>
            <param name="onRenderedStep">A callback to invoke when the game finishes a render step in the draw loop.</param>
            <param name="monitor">Writes messages to the console.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.OnGame1_NewDayAfterFade(System.Action)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.StartTask(System.Threading.Tasks.Task,System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.StartTask``1(System.Threading.Tasks.Task{``0},System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.CreatedInitialLocations">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.SaveAddedLocations">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.OnRendering(StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.GameTime,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.OnRendered(StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.GameTime,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.SModHooks.TryDrawMenu(StardewValley.Menus.IClickableMenu,System.Action)">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.SMultiplayer">
             <summary>SMAPI's implementation of the game's core multiplayer logic.</summary>
             <remarks>
             SMAPI syncs mod context to all players through the host as such:
               1. Farmhand sends ModContext + PlayerIntro.
               2. If host receives ModContext: it stores the context, replies with known contexts, and forwards it to other farmhands.
               3. If host receives PlayerIntro before ModContext: it stores a 'vanilla player' context, and forwards it to other farmhands.
               4. If farmhand receives ModContext: it stores it.
               5. If farmhand receives ServerIntro without a preceding ModContext: it stores a 'vanilla host' context.
               6. If farmhand receives PlayerIntro without a preceding ModContext AND it's not the host peer: it stores a 'vanilla player' context.
            
             Once a farmhand/server stored a context, messages can be sent to that player through the SMAPI APIs.
             </remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.Monitor">
            <summary>Encapsulates monitoring and logging.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.ModRegistry">
            <summary>Tracks the installed mods.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.JsonHelper">
            <summary>Encapsulates SMAPI's JSON file parsing.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.EventManager">
            <summary>Manages SMAPI events.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.OnModMessageReceived">
            <summary>A callback to invoke when a mod message is received.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.LogNetworkTraffic">
            <summary>Whether to log network traffic.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.PeersImpl">
            <summary>The backing field for <see cref="P:StardewModdingAPI.Framework.SMultiplayer.Peers"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SMultiplayer.HostPeerImpl">
            <summary>The backing field for <see cref="P:StardewModdingAPI.Framework.SMultiplayer.HostPeer"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SMultiplayer.Peers">
            <summary>The metadata for each connected peer.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SMultiplayer.HostPeer">
            <summary>The metadata for the host player, if the current player is a farmhand.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.#ctor(StardewModdingAPI.IMonitor,StardewModdingAPI.Framework.Events.EventManager,StardewModdingAPI.Toolkit.Serialization.JsonHelper,StardewModdingAPI.Framework.ModRegistry,System.Action{StardewModdingAPI.Framework.Networking.ModMessageModel},System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="monitor">Encapsulates monitoring and logging.</param>
            <param name="eventManager">Manages SMAPI events.</param>
            <param name="jsonHelper">Encapsulates SMAPI's JSON file parsing.</param>
            <param name="modRegistry">Tracks the installed mods.</param>
            <param name="onModMessageReceived">A callback to invoke when a mod message is received.</param>
            <param name="logNetworkTraffic">Whether to log network traffic.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.CleanupOnMultiplayerExit">
            <summary>Perform cleanup needed when a multiplayer session ends.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.InitClient(StardewValley.Network.Client)">
            <summary>Initialize a client before the game connects to a remote server.</summary>
            <param name="client">The client to initialize.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.InitServer(StardewValley.Network.Server)">
            <summary>Initialize a server before the game connects to an incoming player.</summary>
            <param name="server">The server to initialize.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.OnClientSendingMessage(StardewValley.Network.OutgoingMessage,System.Action{StardewValley.Network.OutgoingMessage},System.Action)">
            <summary>A callback raised when sending a message as a farmhand.</summary>
            <param name="message">The message being sent.</param>
            <param name="sendMessage">Send an arbitrary message through the client.</param>
            <param name="resume">Resume sending the underlying message.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.OnServerProcessingMessage(StardewValley.Network.IncomingMessage,System.Action{StardewValley.Network.OutgoingMessage},System.Action)">
            <summary>Process an incoming network message as the host player.</summary>
            <param name="message">The message to process.</param>
            <param name="sendMessage">A method which sends the given message to the client.</param>
            <param name="resume">Process the message using the game's default logic.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.OnClientProcessingMessage(StardewValley.Network.IncomingMessage,System.Action{StardewValley.Network.OutgoingMessage},System.Action)">
            <summary>Process an incoming network message as a farmhand.</summary>
            <param name="message">The message to process.</param>
            <param name="sendMessage">Send an arbitrary message through the client.</param>
            <param name="resume">Resume processing the message using the game's default logic.</param>
            <returns>Returns whether the message was handled.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.removeDisconnectedFarmers">
            <summary>Remove players who are disconnecting.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.BroadcastModMessage``1(``0,System.String,System.String,System.String[],System.Int64[])">
            <summary>Broadcast a mod message to matching players.</summary>
            <param name="message">The data to send over the network.</param>
            <param name="messageType">A message type which receiving mods can use to decide whether it's the one they want to handle, like <c>SetPlayerLocation</c>. This doesn't need to be globally unique, since mods should check the originating mod ID.</param>
            <param name="fromModID">The unique ID of the mod sending the message.</param>
            <param name="toModIDs">The mod IDs which should receive the message on the destination computers, or <c>null</c> for all mods. Specifying mod IDs is recommended to improve performance, unless it's a general-purpose broadcast.</param>
            <param name="toPlayerIDs">The <see cref="P:StardewValley.Farmer.UniqueMultiplayerID" /> values for the players who should receive the message, or <c>null</c> for all players. If you don't need to broadcast to all players, specifying player IDs is recommended to reduce latency.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.AddPeer(StardewModdingAPI.Framework.Networking.MultiplayerPeer,System.Boolean,System.Boolean)">
            <summary>Save a received peer.</summary>
            <param name="peer">The peer to add.</param>
            <param name="canBeHost">Whether to track the peer as the host if applicable.</param>
            <param name="raiseEvent">Whether to raise the <see cref="F:StardewModdingAPI.Framework.Events.EventManager.PeerContextReceived"/> event.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.ReadContext(System.IO.BinaryReader)">
            <summary>Read the metadata context for a player.</summary>
            <param name="reader">The stream reader.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.ReceiveModMessage(StardewValley.Network.IncomingMessage)">
            <summary>Receive a mod message sent from another player's mods.</summary>
            <param name="message">The raw message to parse.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.GetScreenId(System.Int64)">
            <summary>Get the screen ID for a given player ID, if the player is local.</summary>
            <param name="playerId">The player ID to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.GetKnownPlayerIDs">
            <summary>Get all connected player IDs, including the current player.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.GetContextSyncMessageFields">
            <summary>Get the fields to include in a context sync message sent to other players.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SMultiplayer.GetContextSyncMessageFields(StardewModdingAPI.IMultiplayerPeer)">
            <summary>Get the fields to include in a context sync message sent to other players.</summary>
            <param name="peer">The peer whose data to represent.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.SnapshotDiff`1">
            <summary>A snapshot of a tracked value.</summary>
            <typeparam name="T">The tracked value type.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotDiff`1.IsChanged">
            <summary>Whether the value changed since the last update.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotDiff`1.Old">
            <summary>The previous value.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotDiff`1.New">
            <summary>The current value.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SnapshotDiff`1.Update(System.Boolean,`0,`0)">
            <summary>Update the snapshot.</summary>
            <param name="isChanged">Whether the value changed since the last update.</param>
            <param name="old">The previous value.</param>
            <param name="now">The current value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SnapshotDiff`1.Update(StardewModdingAPI.Framework.StateTracking.IValueWatcher{`0})">
            <summary>Update the snapshot.</summary>
            <param name="watcher">The value watcher to snapshot.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.SnapshotItemListDiff">
            <summary>A snapshot of a tracked item list.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotItemListDiff.IsChanged">
            <summary>Whether the item list changed.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotItemListDiff.Removed">
            <summary>The removed values.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotItemListDiff.Added">
            <summary>The added values.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotItemListDiff.QuantityChanged">
            <summary>The items whose stack sizes changed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SnapshotItemListDiff.#ctor(StardewValley.Item[],StardewValley.Item[],StardewModdingAPI.Events.ItemStackSizeChange[])">
            <summary>Update the snapshot.</summary>
            <param name="added">The added values.</param>
            <param name="removed">The removed values.</param>
            <param name="sizesChanged">The items whose stack sizes changed.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SnapshotItemListDiff.TryGetChanges(System.Collections.Generic.ISet{StardewValley.Item},System.Collections.Generic.ISet{StardewValley.Item},System.Collections.Generic.IDictionary{StardewValley.Item,System.Int32},StardewModdingAPI.Framework.SnapshotItemListDiff@)">
            <summary>Get a snapshot diff if anything changed in the given data.</summary>
            <param name="added">The added item stacks.</param>
            <param name="removed">The removed item stacks.</param>
            <param name="stackSizes">The items with their previous stack sizes.</param>
            <param name="changes">The inventory changes, or <c>null</c> if nothing changed.</param>
            <returns>Returns whether anything changed.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.SnapshotListDiff`1">
            <summary>A snapshot of a tracked list.</summary>
            <typeparam name="T">The tracked list value type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.SnapshotListDiff`1.RemovedImpl">
            <summary>The removed values.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.SnapshotListDiff`1.AddedImpl">
            <summary>The added values.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotListDiff`1.IsChanged">
            <summary>Whether the value changed since the last update.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotListDiff`1.Removed">
            <summary>The removed values.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.SnapshotListDiff`1.Added">
            <summary>The added values.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.SnapshotListDiff`1.Update(System.Boolean,System.Collections.Generic.IEnumerable{`0},System.Collections.Generic.IEnumerable{`0})">
            <summary>Update the snapshot.</summary>
            <param name="isChanged">Whether the value changed since the last update.</param>
            <param name="removed">The removed values.</param>
            <param name="added">The added values.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.SnapshotListDiff`1.Update(StardewModdingAPI.Framework.StateTracking.ICollectionWatcher{`0})">
            <summary>Update the snapshot.</summary>
            <param name="watcher">The value watcher to snapshot.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.ChestTracker">
            <summary>Tracks changes to a chest's items.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.ChestTracker.StackSizes">
            <summary>The item stack sizes as of the last update.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.ChestTracker.Added">
            <summary>Items added since the last update.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.ChestTracker.Removed">
            <summary>Items removed since the last update.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.ChestTracker.InventoryWatcher">
            <summary>The underlying inventory watcher.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.ChestTracker.Chest">
            <summary>The chest being tracked.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.ChestTracker.#ctor(System.String,StardewValley.Objects.Chest)">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="chest">The chest being tracked.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.ChestTracker.Update">
            <summary>Update the current values if needed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.ChestTracker.Reset">
            <summary>Reset all trackers so their current values are the baseline.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.ChestTracker.TryGetInventoryChanges(StardewModdingAPI.Framework.SnapshotItemListDiff@)">
            <summary>Get the inventory changes since the last update, if anything changed.</summary>
            <param name="changes">The inventory changes, or <c>null</c> if nothing changed.</param>
            <returns>Returns whether anything changed.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.ChestTracker.Dispose">
            <summary>Release watchers and resources.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.Comparers.EquatableComparer`1">
            <summary>Compares instances using <see cref="M:System.Collections.Generic.IEqualityComparer`1.Equals(`0,`0)"/>.</summary>
            <typeparam name="T">The value type.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Comparers.EquatableComparer`1.Equals(`0,`0)">
            <summary>Determines whether the specified objects are equal.</summary>
            <returns>true if the specified objects are equal; otherwise, false.</returns>
            <param name="x">The first object to compare.</param>
            <param name="y">The second object to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Comparers.EquatableComparer`1.GetHashCode(`0)">
            <summary>Get a hash code for the specified object.</summary>
            <param name="obj">The value.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.Comparers.GenericEqualsComparer`1">
            <summary>Compares values using their <see cref="M:System.Object.Equals(System.Object)"/> method. This should only be used when <see cref="T:StardewModdingAPI.Framework.StateTracking.Comparers.EquatableComparer`1"/> won't work, since this doesn't validate whether they're comparable.</summary>
            <typeparam name="T">The value type.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Comparers.GenericEqualsComparer`1.Equals(`0,`0)">
            <summary>Determines whether the specified objects are equal.</summary>
            <returns>true if the specified objects are equal; otherwise, false.</returns>
            <param name="x">The first object to compare.</param>
            <param name="y">The second object to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Comparers.GenericEqualsComparer`1.GetHashCode(`0)">
            <summary>Get a hash code for the specified object.</summary>
            <param name="obj">The value.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.Comparers.ObjectReferenceComparer`1">
            <summary>A comparer which considers two references equal if they point to the same instance.</summary>
            <typeparam name="T">The value type.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Comparers.ObjectReferenceComparer`1.Equals(`0,`0)">
            <summary>Determines whether the specified objects are equal.</summary>
            <returns>true if the specified objects are equal; otherwise, false.</returns>
            <param name="x">The first object to compare.</param>
            <param name="y">The second object to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Comparers.ObjectReferenceComparer`1.GetHashCode(`0)">
            <summary>Get a hash code for the specified object.</summary>
            <param name="obj">The value.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.BaseDisposableWatcher">
            <summary>The base implementation for a disposable watcher.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.BaseDisposableWatcher.IsDisposed">
            <summary>Whether the watcher has been disposed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.BaseDisposableWatcher.Dispose">
            <summary>Stop watching the field and release all references.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.BaseDisposableWatcher.AssertNotDisposed">
            <summary>Throw an exception if the watcher is disposed.</summary>
            <exception cref="T:System.ObjectDisposedException">The watcher is disposed.</exception>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1">
            <summary>A watcher which detects changes to a collection of values using a specified <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> instance.</summary>
            <typeparam name="TValue">The value type within the collection.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.CurrentValues">
            <summary>The collection to watch.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.LastValues">
            <summary>The values during the previous update.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.AddedImpl">
            <summary>The pairs added since the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.RemovedImpl">
            <summary>The pairs removed since the last reset.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.Added">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.Removed">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.#ctor(System.String,System.Collections.Generic.ICollection{`0},System.Collections.Generic.IEqualityComparer{`0})">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="values">The collection to watch.</param>
            <param name="comparer">The equality comparer which indicates whether two values are the same.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableListWatcher`1.Reset">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1">
            <summary>A watcher which detects changes to a value using a specified <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> instance.</summary>
            <typeparam name="TValue">The comparable value type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.GetValue">
            <summary>Get the current value.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.Comparer">
            <summary>The equality comparer.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.PreviousValue">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.CurrentValue">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.IsChanged">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.#ctor(System.String,System.Func{`0},System.Collections.Generic.IEqualityComparer{`0})">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="getValue">Get the current value.</param>
            <param name="comparer">The equality comparer which indicates whether two values are the same.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ComparableWatcher`1.Dispose">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1">
            <summary>A collection watcher which never changes.</summary>
            <typeparam name="TValue">The value type within the collection.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.Instance">
            <summary>A singleton collection watcher instance.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.Added">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.Removed">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ImmutableCollectionWatcher`1.Dispose">
            <inheritdoc />
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher">
            <summary>A watcher which detects changes to an item inventory.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Inventory">
            <summary>The inventory being watched.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.AddedImpl">
            <summary>The pairs added since the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.RemovedImpl">
            <summary>The pairs removed since the last reset.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Added">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Removed">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.#ctor(System.String,StardewValley.Inventories.Inventory)">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="inventory">The inventory to watch.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.OnInventoryReplaced(StardewValley.Inventories.Inventory,System.Collections.Generic.IList{StardewValley.Item},System.Collections.Generic.IList{StardewValley.Item})">
            <summary>A callback invoked when the value list is replaced.</summary>
            <param name="inventory">The net field whose values changed.</param>
            <param name="oldValues">The previous list of values.</param>
            <param name="newValues">The new list of values.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.OnSlotChanged(StardewValley.Inventories.Inventory,System.Int32,StardewValley.Item,StardewValley.Item)">
            <summary>A callback invoked when an entry is replaced.</summary>
            <param name="inventory">The inventory whose values changed.</param>
            <param name="index">The list index which changed.</param>
            <param name="oldValue">The previous value.</param>
            <param name="newValue">The new value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Add(StardewValley.Item)">
            <summary>Track an added item.</summary>
            <param name="value">The value that was added.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.InventoryWatcher.Remove(StardewValley.Item)">
            <summary>Track a removed item.</summary>
            <param name="value">The value that was removed.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1">
            <summary>A watcher which detects changes to a Netcode collection.</summary>
            <typeparam name="TValue">The value type within the collection.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.Field">
            <summary>The field being watched.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.AddedImpl">
            <summary>The pairs added since the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.RemovedImpl">
            <summary>The pairs removed since the last reset.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.Added">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.Removed">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.#ctor(System.String,Netcode.NetCollection{`0})">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="field">The field to watch.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.OnValueAdded(`0)">
            <summary>A callback invoked when an entry is added to the collection.</summary>
            <param name="value">The added value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetCollectionWatcher`1.OnValueRemoved(`0)">
            <summary>A callback invoked when an entry is removed from the collection.</summary>
            <param name="value">The added value.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5">
            <summary>A watcher which detects changes to a net dictionary field.</summary>
            <typeparam name="TKey">The dictionary key type.</typeparam>
            <typeparam name="TValue">The dictionary value type.</typeparam>
            <typeparam name="TField">The net type equivalent to <typeparamref name="TValue"/>.</typeparam>
            <typeparam name="TSerialDict">The serializable dictionary type that can store the keys and values.</typeparam>
            <typeparam name="TSelf">The net field instance type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.PairsAdded">
            <summary>The pairs added since the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.PairsRemoved">
            <summary>The pairs removed since the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.Field">
            <summary>The field being watched.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.Added">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.Removed">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.#ctor(System.String,Netcode.NetDictionary{`0,`1,`2,`3,`4})">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="field">The field to watch.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.OnValueAdded(`0,`1)">
            <summary>A callback invoked when an entry is added to the dictionary.</summary>
            <param name="key">The entry key.</param>
            <param name="value">The entry value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetDictionaryWatcher`5.OnValueRemoved(`0,`1)">
            <summary>A callback invoked when an entry is removed from the dictionary.</summary>
            <param name="key">The entry key.</param>
            <param name="value">The entry value.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2">
            <summary>A watcher which detects changes to a net value field.</summary>
            <typeparam name="TValue">The value type wrapped by the net field.</typeparam>
            <typeparam name="TNetField">The net field type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.Field">
            <summary>The field being watched.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.PreviousValue">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.CurrentValue">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.#ctor(System.String,Netcode.NetFieldBase{`0,`1})">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="field">The field to watch.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.NetValueWatcher`2.OnValueChanged(`1,`0,`0)">
            <summary>A callback invoked when the field's value changes.</summary>
            <param name="field">The field being watched.</param>
            <param name="oldValue">The old field value.</param>
            <param name="newValue">The new field value.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1">
            <summary>A watcher which detects changes to an observable collection.</summary>
            <typeparam name="TValue">The value type within the collection.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.Field">
            <summary>The field being watched.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.AddedImpl">
            <summary>The pairs added since the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.RemovedImpl">
            <summary>The pairs removed since the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.PreviousValues">
            <summary>The previous values as of the last update.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.Added">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.Removed">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.#ctor(System.String,System.Collections.ObjectModel.ObservableCollection{`0})">
            <summary>Construct an instance.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="field">The field to watch.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.ObservableCollectionWatcher`1.OnCollectionChanged(System.Object,System.Collections.Specialized.NotifyCollectionChangedEventArgs)">
            <summary>A callback invoked when an entry is added or removed from the collection.</summary>
            <param name="sender">The event sender.</param>
            <param name="e">The event arguments.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory">
            <summary>Provides convenience wrappers for creating watchers.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForGenericEquality``1(System.String,System.Func{``0})">
            <summary>Get a watcher which compares values using their <see cref="M:System.Object.Equals(System.Object)"/> method. This method should only be used when <see cref="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForEquatable``1(System.String,System.Func{``0})"/> won't work, since this doesn't validate whether they're comparable.</summary>
            <typeparam name="T">The value type.</typeparam>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="getValue">Get the current value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForEquatable``1(System.String,System.Func{``0})">
            <summary>Get a watcher for an <see cref="T:System.IEquatable`1"/> value.</summary>
            <typeparam name="T">The value type.</typeparam>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="getValue">Get the current value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForReference``1(System.String,System.Func{``0})">
            <summary>Get a watcher which detects when an object reference changes.</summary>
            <typeparam name="T">The value type.</typeparam>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="getValue">Get the current value.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForNetValue``2(System.String,Netcode.NetFieldBase{``0,``1})">
            <summary>Get a watcher for a net collection.</summary>
            <typeparam name="T">The value type.</typeparam>
            <typeparam name="TSelf">The net field instance type.</typeparam>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="field">The net collection.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForReferenceList``1(System.String,System.Collections.Generic.ICollection{``0})">
            <summary>Get a watcher which detects when an object reference in a collection changes.</summary>
            <typeparam name="T">The value type.</typeparam>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="collection">The observable collection.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForObservableCollection``1(System.String,System.Collections.ObjectModel.ObservableCollection{``0})">
            <summary>Get a watcher for an observable collection.</summary>
            <typeparam name="T">The value type.</typeparam>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="collection">The observable collection.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForImmutableCollection``1">
            <summary>Get a watcher for a collection that never changes.</summary>
            <typeparam name="T">The value type.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForInventory(System.String,StardewValley.Inventories.Inventory)">
            <summary>Get a watcher for an item inventory.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="inventory">The item inventory.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForNetCollection``1(System.String,Netcode.NetCollection{``0})">
            <summary>Get a watcher for a net collection.</summary>
            <typeparam name="T">The value type.</typeparam>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <param name="collection">The net collection.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.FieldWatchers.WatcherFactory.ForNetDictionary``5(System.String,Netcode.NetDictionary{``0,``1,``2,``3,``4})">
            <summary>Get a watcher for a net dictionary.</summary>
            <param name="name">A name which identifies what the watcher is watching, used for troubleshooting.</param>
            <typeparam name="TKey">The dictionary key type.</typeparam>
            <typeparam name="TValue">The dictionary value type.</typeparam>
            <typeparam name="TField">The net type equivalent to <typeparamref name="TValue"/>.</typeparam>
            <typeparam name="TSerialDict">The serializable dictionary type that can store the keys and values.</typeparam>
            <typeparam name="TSelf">The net field instance type.</typeparam>
            <param name="field">The net field.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.ICollectionWatcher`1">
            <summary>A watcher which tracks changes to a collection.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.ICollectionWatcher`1.Added">
            <summary>The values added since the last reset.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.ICollectionWatcher`1.Removed">
            <summary>The values removed since the last reset.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.IDictionaryWatcher`2">
            <summary>A watcher which tracks changes to a dictionary.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.IValueWatcher`1">
            <summary>A watcher which tracks changes to a value.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.IValueWatcher`1.PreviousValue">
            <summary>The field value at the last reset.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.IValueWatcher`1.CurrentValue">
            <summary>The latest value.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.IWatcher">
            <summary>A watcher which detects changes to something.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.IWatcher.Name">
            <summary>A name which identifies what the watcher is watching, used for troubleshooting.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.IWatcher.IsChanged">
            <summary>Whether the value changed since the last reset.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.IWatcher.Update">
            <summary>Update the current value if needed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.IWatcher.Reset">
            <summary>Set the current value as the baseline.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.LocationTracker">
            <summary>Tracks changes to a location's data.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.LocationTracker.Watchers">
            <summary>The underlying watchers.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.Location">
            <summary>The tracked location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.BuildingsWatcher">
            <summary>Tracks added or removed buildings.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.DebrisWatcher">
            <summary>Tracks added or removed debris.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.LargeTerrainFeaturesWatcher">
            <summary>Tracks added or removed large terrain features.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.NpcsWatcher">
            <summary>Tracks added or removed NPCs.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.ObjectsWatcher">
            <summary>Tracks added or removed objects.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.TerrainFeaturesWatcher">
            <summary>Tracks added or removed terrain features.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.FurnitureWatcher">
            <summary>Tracks added or removed furniture.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.LocationTracker.ChestWatchers">
            <summary>Tracks items added or removed to chests.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.LocationTracker.#ctor(StardewValley.GameLocation)">
            <summary>Construct an instance.</summary>
            <param name="location">The location to track.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.LocationTracker.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.LocationTracker.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.LocationTracker.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.LocationTracker.UpdateChestWatcherList(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{Microsoft.Xna.Framework.Vector2,StardewValley.Object}},System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{Microsoft.Xna.Framework.Vector2,StardewValley.Object}})">
            <summary>Update the watcher list for added or removed chests.</summary>
            <param name="added">The objects added to the location.</param>
            <param name="removed">The objects removed from the location.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.PlayerTracker">
            <summary>Tracks changes to a player's data.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.PlayerTracker.PreviousInventory">
            <summary>The player's inventory as of the last reset.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.PlayerTracker.CurrentInventory">
            <summary>The player's inventory change as of the last update.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.PlayerTracker.LastValidLocation">
            <summary>The player's last valid location.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.PlayerTracker.Watchers">
            <summary>The underlying watchers.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.PlayerTracker.Player">
            <summary>The player being tracked.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.PlayerTracker.LocationWatcher">
            <summary>The player's current location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.PlayerTracker.SkillWatchers">
            <summary>Tracks changes to the player's skill levels.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.PlayerTracker.#ctor(StardewValley.Farmer)">
            <summary>Construct an instance.</summary>
            <param name="player">The player to track.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.PlayerTracker.Update">
            <summary>Update the current values if needed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.PlayerTracker.Reset">
            <summary>Reset all trackers so their current values are the baseline.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.PlayerTracker.GetCurrentLocation">
            <summary>Get the player's current location, ignoring temporary null values.</summary>
            <remarks>The game will set <see cref="P:StardewValley.Character.currentLocation"/> to null in some cases, e.g. when they're a secondary player in multiplayer and transition to a location that hasn't been synced yet. While that's happening, this returns the player's last valid location instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.PlayerTracker.TryGetInventoryChanges(StardewModdingAPI.Framework.SnapshotItemListDiff@)">
            <summary>Get the inventory changes since the last update, if anything changed.</summary>
            <param name="changes">The inventory changes, or <c>null</c> if nothing changed.</param>
            <returns>Returns whether anything changed.</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.PlayerTracker.Dispose">
            <summary>Release watchers and resources.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.PlayerTracker.GetInventory">
            <summary>Get the player's current inventory.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot">
            <summary>A frozen snapshot of a tracked game location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.Location">
            <summary>The tracked location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.Buildings">
            <summary>Tracks added or removed buildings.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.Debris">
            <summary>Tracks added or removed debris.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.LargeTerrainFeatures">
            <summary>Tracks added or removed large terrain features.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.Npcs">
            <summary>Tracks added or removed NPCs.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.Objects">
            <summary>Tracks added or removed objects.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.TerrainFeatures">
            <summary>Tracks added or removed terrain features.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.Furniture">
            <summary>Tracks added or removed furniture.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.ChestItems">
            <summary>Tracks changed chest inventories.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.#ctor(StardewValley.GameLocation)">
            <summary>Construct an instance.</summary>
            <param name="location">The tracked location.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Snapshots.LocationSnapshot.Update(StardewModdingAPI.Framework.StateTracking.LocationTracker)">
            <summary>Update the tracked values.</summary>
            <param name="watcher">The watcher to snapshot.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot">
            <summary>A frozen snapshot of a tracked player.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot.EmptyItemListDiff">
            <summary>An empty item list diff.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot.Player">
            <summary>The player being tracked.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot.Location">
            <summary>The player's current location.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot.Skills">
            <summary>Tracks changes to the player's skill levels.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot.Inventory">
            <summary>Get a list of inventory changes.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot.#ctor(StardewValley.Farmer)">
            <summary>Construct an instance.</summary>
            <param name="player">The player being tracked.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Snapshots.PlayerSnapshot.Update(StardewModdingAPI.Framework.StateTracking.PlayerTracker)">
            <summary>Update the tracked values.</summary>
            <param name="watcher">The player watcher to snapshot.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot">
            <summary>A frozen snapshot of the game state watchers.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.WindowSize">
            <summary>Tracks changes to the window size.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.CurrentPlayer">
            <summary>Tracks changes to the current player.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.Time">
            <summary>Tracks changes to the time of day (in 24-hour military format).</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.SaveID">
            <summary>Tracks changes to the save ID.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.Locations">
            <summary>Tracks changes to the game's locations.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.ActiveMenu">
            <summary>Tracks changes to <see cref="P:StardewValley.Game1.activeClickableMenu"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.Cursor">
            <summary>Tracks changes to the cursor position.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.MouseWheelScroll">
            <summary>Tracks changes to the mouse wheel scroll.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.Locale">
            <summary>Tracks changes to the content locale.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Snapshots.WatcherSnapshot.Update(StardewModdingAPI.Framework.WatcherCore)">
            <summary>Update the tracked values.</summary>
            <param name="watchers">The watchers to snapshot.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot">
            <summary>A frozen snapshot of the tracked game locations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot.LocationsDict">
            <summary>A map of tracked locations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot.PooledMissingLocations">
            <summary>The pooled list instance for <see cref="M:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot.GetMissingLocations(StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker)"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot.LocationList">
            <summary>Tracks changes to the location list.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot.Locations">
            <summary>The tracked locations.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot.Update(StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker)">
            <summary>Update the tracked values.</summary>
            <param name="watcher">The watcher to snapshot.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.Snapshots.WorldLocationsSnapshot.GetMissingLocations(StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker)">
            <summary>Get the watched locations which no longer exist in the world, if any.</summary>
            <param name="watcher">The location list tracker.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker">
            <summary>Detects changes to the game's locations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.LocationListWatcher">
            <summary>Tracks changes to the location list.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.MineLocationListWatcher">
            <summary>Tracks changes to the list of active mine locations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.VolcanoLocationListWatcher">
            <summary>Tracks changes to the list of active volcano locations.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.LocationDict">
            <summary>A lookup of the tracked locations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.BuildingIndoors">
            <summary>A lookup of registered buildings and their indoor location.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.PooledLocationsWithBuildingsChanged">
            <summary>The pooled list instance for <see cref="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.GetLocationsWhoseBuildingsChanged"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Name">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.IsLocationListChanged">
            <summary>Whether locations were added or removed since the last reset.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.IsChanged">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Locations">
            <summary>The tracked locations.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Added">
            <summary>The locations removed since the last update.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Removed">
            <summary>The locations added since the last update.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.#ctor(System.Collections.ObjectModel.ObservableCollection{StardewValley.GameLocation},System.Collections.Generic.IList{StardewValley.Locations.MineShaft},System.Collections.Generic.IList{StardewValley.Locations.VolcanoDungeon})">
            <summary>Construct an instance.</summary>
            <param name="locations">The game's list of locations.</param>
            <param name="activeMineLocations">The game's list of active mine locations.</param>
            <param name="activeVolcanoLocations">The game's list of active volcano locations.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Update">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.ResetLocationList">
            <summary>Set the current location list as the baseline.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Reset">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.HasLocationTracker(StardewValley.GameLocation)">
            <summary>Get whether the given location is tracked.</summary>
            <param name="location">The location to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Dispose">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Add(System.Collections.Generic.IEnumerable{StardewValley.Buildings.Building})">
            <summary>Add the given buildings.</summary>
            <param name="buildings">The buildings to add.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Add(System.Collections.Generic.IEnumerable{StardewValley.GameLocation})">
            <summary>Add the given locations.</summary>
            <param name="locations">The locations to add.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Remove(System.Collections.Generic.IEnumerable{StardewValley.Buildings.Building})">
            <summary>Remove the given buildings.</summary>
            <param name="buildings">The buildings to remove.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Remove(System.Collections.Generic.IEnumerable{StardewValley.GameLocation})">
            <summary>Remove the given locations.</summary>
            <param name="locations">The locations to remove.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Add(StardewValley.Buildings.Building)">
            <summary>Add the given building.</summary>
            <param name="building">The building to add.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Add(StardewValley.GameLocation)">
            <summary>Add the given location.</summary>
            <param name="location">The location to add.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Remove(StardewValley.Buildings.Building)">
            <summary>Remove the given building.</summary>
            <param name="building">The building to remove.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.Remove(StardewValley.GameLocation)">
            <summary>Remove the given location.</summary>
            <param name="location">The location to remove.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.GetWatchers">
            <summary>The underlying watchers.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.StateTracking.WorldLocationsTracker.GetLocationsWhoseBuildingsChanged">
            <summary>Get the locations whose building list changed, if any.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Translator">
            <summary>Encapsulates access to arbitrary translations. Translations are fetched with locale fallback, so missing translations are filled in from broader locales (like <c>pt-BR.json</c> &lt; <c>pt.json</c> &lt; <c>default.json</c>).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Translator.All">
            <summary>The translations for each locale.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Translator.ForLocale">
            <summary>The translations for the current locale, with locale fallback taken into account.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Translator.Locale">
            <summary>The current locale code like <c>fr-FR</c>, or an empty string for English.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Translator.LocaleEnum">
            <summary>The game's current language code.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.SetLocale(System.String,StardewValley.LocalizedContentManager.LanguageCode)">
            <summary>Set the current locale and pre-cache translations.</summary>
            <param name="locale">The current locale.</param>
            <param name="localeEnum">The game's current language code.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.GetTranslations">
            <summary>Get all translations for the current locale.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.Get(System.String)">
            <summary>Get a translation for the current locale.</summary>
            <param name="key">The translation key.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.Get(System.String,System.Object)">
            <summary>Get a translation for the current locale.</summary>
            <param name="key">The translation key.</param>
            <param name="tokens">An object containing token key/value pairs. This can be an anonymous object (like <c>new { value = 42, name = "Cranberries" }</c>), a dictionary, or a class instance.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.GetInAllLocales(System.String,System.Boolean)">
            <summary>Get a translation in every locale for which it's defined.</summary>
            <param name="key">The translation key.</param>
            <param name="withFallback">Whether to add duplicate translations for locale fallback. For example, if a translation is defined in <c>default.json</c> but not <c>fr.json</c>, setting this to true will add a <c>fr</c> entry which duplicates the default text.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.SetTranslations(System.Collections.Generic.IDictionary{System.String,System.Collections.Generic.IDictionary{System.String,System.String}})">
            <summary>Set the translations to use.</summary>
            <param name="translations">The translations to use.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.GetAllKeysRaw">
            <summary>Get all translation keys in the underlying translation data, ignoring the <see cref="F:StardewModdingAPI.Framework.Translator.ForLocale"/> cache.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.GetRaw(System.String,System.String,System.Boolean)">
            <summary>Get a translation from the underlying translation data, ignoring the <see cref="F:StardewModdingAPI.Framework.Translator.ForLocale"/> cache.</summary>
            <param name="key">The translation key.</param>
            <param name="locale">The locale to get.</param>
            <param name="withFallback">Whether to add duplicate translations for locale fallback. For example, if a translation is defined in <c>default.json</c> but not <c>fr.json</c>, setting this to true will add a <c>fr</c> entry which duplicates the default text.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Translator.GetRelevantLocales(System.String)">
            <summary>Get the locales which can provide translations for the given locale, in precedence order.</summary>
            <param name="locale">The locale for which to find valid locales.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Utilities.ContextHash`1">
            <summary>A <see cref="T:System.Collections.Generic.HashSet`1"/> wrapper meant for tracking recursive contexts.</summary>
            <typeparam name="T">The key type.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.ContextHash`1.#ctor">
            <summary>Construct an instance.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.ContextHash`1.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
            <summary>Construct an instance.</summary>
            <param name="comparer">The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> implementation to use when comparing values in the set, or <c>null</c> to use the default comparer for the set type.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.ContextHash`1.Track(`0,System.Action)">
            <summary>Add a key while an action is in progress, and remove it when it completes.</summary>
            <param name="key">The key to add.</param>
            <param name="action">The action to perform.</param>
            <exception cref="T:System.InvalidOperationException">The specified key is already added.</exception>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.ContextHash`1.Track``1(`0,System.Func{``0})">
            <summary>Add a key while an action is in progress, and remove it when it completes.</summary>
            <typeparam name="TResult">The value type returned by the method.</typeparam>
            <param name="key">The key to add.</param>
            <param name="action">The action to perform.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.Utilities.Countdown">
            <summary>Counts down from a baseline value.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Utilities.Countdown.Initial">
            <summary>The initial value from which to count down.</summary>
        </member>
        <member name="P:StardewModdingAPI.Framework.Utilities.Countdown.Current">
            <summary>The current value.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.Countdown.#ctor(System.Int32)">
            <summary>Construct an instance.</summary>
            <param name="initial">The initial value from which to count down.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.Countdown.Decrement">
            <summary>Reduce the current value by one.</summary>
            <returns>Returns whether the value was decremented (i.e. wasn't already zero).</returns>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.Countdown.Reset">
            <summary>Restart the countdown.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Utilities.IntervalMemoryCache`2">
            <summary>A memory cache with sliding expiry based on custom intervals, with no background processing.</summary>
            <typeparam name="TKey">The cache key type.</typeparam>
            <typeparam name="TValue">The cache value type.</typeparam>
            <remarks>This is optimized for small caches that are reset relatively rarely. Each cache entry is marked as hot (accessed since the interval started) or stale.
            When a new interval is started, stale entries are cleared and hot entries become stale.</remarks>
        </member>
        <member name="F:StardewModdingAPI.Framework.Utilities.IntervalMemoryCache`2.HotCache">
            <summary>The cached values that were accessed during the current interval.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Utilities.IntervalMemoryCache`2.StaleCache">
            <summary>The cached values that will expire on the next interval.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.IntervalMemoryCache`2.GetOrSet(`0,System.Func{`1})">
            <summary>Get a value from the cache, fetching it first if needed.</summary>
            <param name="cacheKey">The unique key for the cached value.</param>
            <param name="get">Get the latest data if it's not in the cache yet.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.IntervalMemoryCache`2.StartNewInterval">
            <summary>Start a new cache interval, removing any stale entries.</summary>
        </member>
        <member name="T:StardewModdingAPI.Framework.Utilities.TickCacheDictionary`2">
            <summary>An in-memory dictionary cache that stores data for the duration of a game update tick.</summary>
            <typeparam name="TKey">The dictionary key type.</typeparam>
            <typeparam name="TValue">The dictionary value type.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Framework.Utilities.TickCacheDictionary`2.LastGameTick">
            <summary>The last game tick for which data was cached.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.Utilities.TickCacheDictionary`2.Cache">
            <summary>The underlying cached data.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.TickCacheDictionary`2.GetOrSet(`0,System.Func{`1})">
            <summary>Get a value from the cache, fetching it first if it's not cached yet.</summary>
            <param name="cacheKey">The unique key for the cached value.</param>
            <param name="get">Get the latest data if it's not in the cache yet.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.TickCacheDictionary`2.Remove(`0)">
            <summary>Remove an entry from the cache.</summary>
            <param name="cacheKey">The unique key for the cached value.</param>
            <returns>Returns whether the key was present in the dictionary.</returns>
        </member>
        <member name="T:StardewModdingAPI.Framework.Utilities.TickCacheDictionary`1">
            <summary>An in-memory dictionary cache that stores data for the duration of a game update tick.</summary>
            <typeparam name="TKey">The dictionary key type.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.Framework.Utilities.TickCacheDictionary`1.GetOrSet``1(`0,System.Func{``0})">
            <summary>Get a value from the cache, fetching it first if it's not cached yet.</summary>
            <param name="cacheKey">The unique key for the cached value.</param>
            <param name="get">Get the latest data if it's not in the cache yet.</param>
        </member>
        <member name="T:StardewModdingAPI.Framework.WatcherCore">
            <summary>Monitors the entire game state for changes, virally spreading watchers into any new entities that get created.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.Watchers">
            <summary>The underlying watchers for convenience. These are accessible individually as separate properties.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.WindowSizeWatcher">
            <summary>Tracks changes to the window size.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.CurrentPlayerTracker">
            <summary>Tracks changes to the current player.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.TimeWatcher">
            <summary>Tracks changes to the time of day (in 24-hour military format).</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.SaveIdWatcher">
            <summary>Tracks changes to the save ID.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.LocationsWatcher">
            <summary>Tracks changes to the game's locations.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.ActiveMenuWatcher">
            <summary>Tracks changes to <see cref="P:StardewValley.Game1.activeClickableMenu"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.CursorWatcher">
            <summary>Tracks changes to the cursor position.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.MouseWheelScrollWatcher">
            <summary>Tracks changes to the mouse wheel scroll.</summary>
        </member>
        <member name="F:StardewModdingAPI.Framework.WatcherCore.LocaleWatcher">
            <summary>Tracks changes to the content locale.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.WatcherCore.#ctor(StardewModdingAPI.Framework.Input.SInputState,System.Collections.ObjectModel.ObservableCollection{StardewValley.GameLocation})">
            <summary>Construct an instance.</summary>
            <param name="inputState">Manages input visible to the game.</param>
            <param name="gameLocations">The observable list of game locations.</param>
        </member>
        <member name="M:StardewModdingAPI.Framework.WatcherCore.Update">
            <summary>Update the watchers and adjust for added or removed entities.</summary>
        </member>
        <member name="M:StardewModdingAPI.Framework.WatcherCore.Reset">
            <summary>Reset the current values as the baseline.</summary>
        </member>
        <member name="T:StardewModdingAPI.GameFramework">
            <summary>The game framework running the game.</summary>
        </member>
        <member name="F:StardewModdingAPI.GameFramework.MonoGame">
            <summary>The MonoGame framework.</summary>
        </member>
        <member name="T:StardewModdingAPI.GamePlatform">
            <summary>The game's platform version.</summary>
        </member>
        <member name="F:StardewModdingAPI.GamePlatform.Android">
            <summary>The Android version of the game.</summary>
        </member>
        <member name="F:StardewModdingAPI.GamePlatform.Linux">
            <summary>The Linux version of the game.</summary>
        </member>
        <member name="F:StardewModdingAPI.GamePlatform.Mac">
            <summary>The macOS version of the game.</summary>
        </member>
        <member name="F:StardewModdingAPI.GamePlatform.Windows">
            <summary>The Windows version of the game.</summary>
        </member>
        <member name="T:StardewModdingAPI.IAssetData`1">
            <summary>Generic metadata and methods for a content asset being loaded.</summary>
            <typeparam name="TValue">The expected data type.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.IAssetData`1.Data">
            <summary>The content data being read.</summary>
        </member>
        <member name="M:StardewModdingAPI.IAssetData`1.ReplaceWith(`0)">
            <summary>Replace the entire content value with the given value. This is generally not recommended, since it may break compatibility with other mods or different versions of the game.</summary>
            <param name="value">The new content value.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="value"/> is null.</exception>
            <exception cref="T:System.InvalidCastException">The <paramref name="value"/>'s type is not compatible with the loaded asset's type.</exception>
        </member>
        <member name="T:StardewModdingAPI.IAssetData">
            <summary>Generic metadata and methods for a content asset being loaded.</summary>
        </member>
        <member name="M:StardewModdingAPI.IAssetData.AsDictionary``2">
            <summary>Get a helper to manipulate the data as a dictionary.</summary>
            <typeparam name="TKey">The expected dictionary key.</typeparam>
            <typeparam name="TValue">The expected dictionary value.</typeparam>
            <exception cref="T:System.InvalidOperationException">The content being read isn't a dictionary.</exception>
        </member>
        <member name="M:StardewModdingAPI.IAssetData.AsImage">
            <summary>Get a helper to manipulate the data as an image.</summary>
            <exception cref="T:System.InvalidOperationException">The content being read isn't an image.</exception>
        </member>
        <member name="M:StardewModdingAPI.IAssetData.AsMap">
            <summary>Get a helper to manipulate the data as a map.</summary>
            <exception cref="T:System.InvalidOperationException">The content being read isn't a map.</exception>
        </member>
        <member name="M:StardewModdingAPI.IAssetData.GetData``1">
            <summary>Get the data as a given type.</summary>
            <typeparam name="TData">The expected data type.</typeparam>
            <exception cref="T:System.InvalidCastException">The data can't be converted to <typeparamref name="TData"/>.</exception>
        </member>
        <member name="T:StardewModdingAPI.IAssetDataForDictionary`2">
            <summary>Encapsulates access and changes to dictionary content being read from a data file.</summary>
        </member>
        <member name="T:StardewModdingAPI.IAssetDataForImage">
            <summary>Encapsulates access and changes to image content being read from a data file.</summary>
        </member>
        <member name="M:StardewModdingAPI.IAssetDataForImage.PatchImage(StardewModdingAPI.IRawTextureData,System.Nullable{Microsoft.Xna.Framework.Rectangle},System.Nullable{Microsoft.Xna.Framework.Rectangle},StardewModdingAPI.PatchMode)">
            <summary>Overwrite part of the image.</summary>
            <param name="source">The image to patch into the content.</param>
            <param name="sourceArea">The part of the <paramref name="source"/> to copy (or <c>null</c> to take the whole texture). This must be within the bounds of the <paramref name="source"/> texture.</param>
            <param name="targetArea">The part of the content to patch (or <c>null</c> to patch the whole texture). The original content within this area will be erased. This must be within the bounds of the existing spritesheet.</param>
            <param name="patchMode">Indicates how an image should be patched.</param>
            <exception cref="T:System.ArgumentNullException">One of the arguments is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="targetArea"/> is outside the bounds of the spritesheet.</exception>
            <exception cref="T:System.InvalidOperationException">The content being read isn't an image.</exception>
        </member>
        <member name="M:StardewModdingAPI.IAssetDataForImage.PatchImage(Microsoft.Xna.Framework.Graphics.Texture2D,System.Nullable{Microsoft.Xna.Framework.Rectangle},System.Nullable{Microsoft.Xna.Framework.Rectangle},StardewModdingAPI.PatchMode)">
            <summary>Overwrite part of the image.</summary>
            <param name="source">The image to patch into the content.</param>
            <param name="sourceArea">The part of the <paramref name="source"/> to copy (or <c>null</c> to take the whole texture). This must be within the bounds of the <paramref name="source"/> texture.</param>
            <param name="targetArea">The part of the content to patch (or <c>null</c> to patch the whole texture). The original content within this area will be erased. This must be within the bounds of the existing spritesheet.</param>
            <param name="patchMode">Indicates how an image should be patched.</param>
            <exception cref="T:System.ArgumentNullException">One of the arguments is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">The <paramref name="targetArea"/> is outside the bounds of the spritesheet.</exception>
            <exception cref="T:System.InvalidOperationException">The content being read isn't an image.</exception>
        </member>
        <member name="M:StardewModdingAPI.IAssetDataForImage.ExtendImage(System.Int32,System.Int32)">
            <summary>Extend the image if needed to fit the given size. Note that this is an expensive operation, creates a new texture instance, and that extending a spritesheet horizontally may cause game errors or bugs.</summary>
            <param name="minWidth">The minimum texture width in pixels.</param>
            <param name="minHeight">The minimum texture height in pixels.</param>
            <returns>Whether the texture was resized.</returns>
        </member>
        <member name="T:StardewModdingAPI.IAssetDataForMap">
            <summary>Encapsulates access and changes to map content being read from a data file.</summary>
        </member>
        <member name="M:StardewModdingAPI.IAssetDataForMap.PatchMap(xTile.Map,System.Nullable{Microsoft.Xna.Framework.Rectangle},System.Nullable{Microsoft.Xna.Framework.Rectangle},StardewModdingAPI.PatchMapMode)">
            <summary>Copy layers, tiles, and tilesheets from another map onto the asset.</summary>
            <param name="source">The map from which to copy.</param>
            <param name="sourceArea">The tile area within the source map to copy, or <c>null</c> for the entire source map size. This must be within the bounds of the <paramref name="source"/> map.</param>
            <param name="targetArea">The tile area within the target map to overwrite, or <c>null</c> to patch the whole map. The original content within this area will be erased. This must be within the bounds of the existing map.</param>
            <param name="patchMode">Indicates how the map should be patched.</param>
        </member>
        <member name="M:StardewModdingAPI.IAssetDataForMap.ExtendMap(System.Int32,System.Int32)">
            <summary>Extend the map if needed to fit the given size. Note that this is an expensive operation and resizes the map in-place.</summary>
            <param name="minWidth">The minimum map width in tiles.</param>
            <param name="minHeight">The minimum map height in tiles.</param>
            <returns>Whether the map was resized.</returns>
        </member>
        <member name="T:StardewModdingAPI.IAssetInfo">
            <summary>Basic metadata for a content asset.</summary>
        </member>
        <member name="P:StardewModdingAPI.IAssetInfo.Locale">
            <summary>The content's locale code, if the content is localized.</summary>
        </member>
        <member name="P:StardewModdingAPI.IAssetInfo.Name">
            <summary>The asset name being read.</summary>
        </member>
        <member name="P:StardewModdingAPI.IAssetInfo.NameWithoutLocale">
            <summary>The <see cref="P:StardewModdingAPI.IAssetInfo.Name"/> with any locale codes stripped.</summary>
            <remarks>For example, if <see cref="P:StardewModdingAPI.IAssetInfo.Name"/> contains a locale like <c>Data/Bundles.fr-FR</c>, this will be the name without locale like <c>Data/Bundles</c>. If the name has no locale, this field is equivalent.</remarks>
        </member>
        <member name="P:StardewModdingAPI.IAssetInfo.DataType">
            <summary>The content data type.</summary>
        </member>
        <member name="T:StardewModdingAPI.IAssetName">
            <summary>The name for an asset loaded through the content pipeline.</summary>
        </member>
        <member name="P:StardewModdingAPI.IAssetName.Name">
            <summary>The full normalized asset name, including the locale if applicable (like <c>Data/Achievements.fr-FR</c>).</summary>
        </member>
        <member name="P:StardewModdingAPI.IAssetName.BaseName">
            <summary>The base asset name without the locale code.</summary>
        </member>
        <member name="P:StardewModdingAPI.IAssetName.LocaleCode">
            <summary>The locale code specified in the <see cref="P:StardewModdingAPI.IAssetName.Name"/>, if it's a valid code recognized by the game content.</summary>
        </member>
        <member name="P:StardewModdingAPI.IAssetName.LanguageCode">
            <summary>The language code matching the <see cref="P:StardewModdingAPI.IAssetName.LocaleCode"/>, if applicable.</summary>
        </member>
        <member name="M:StardewModdingAPI.IAssetName.IsEquivalentTo(System.String,System.Boolean)">
            <summary>Get whether the given asset name is equivalent, ignoring capitalization and formatting.</summary>
            <param name="assetName">The asset name to compare this instance to.</param>
            <param name="useBaseName">Whether to compare the given name with the <see cref="P:StardewModdingAPI.IAssetName.BaseName"/> (if true) or <see cref="P:StardewModdingAPI.IAssetName.Name"/> (if false). This has no effect on any locale included in the given <paramref name="assetName"/>.</param>
        </member>
        <member name="M:StardewModdingAPI.IAssetName.IsEquivalentTo(StardewModdingAPI.IAssetName,System.Boolean)">
            <summary>Get whether the given asset name is equivalent, ignoring capitalization and formatting.</summary>
            <param name="assetName">The asset name to compare this instance to.</param>
            <param name="useBaseName">Whether to compare the given name with the <see cref="P:StardewModdingAPI.IAssetName.BaseName"/> (if true) or <see cref="P:StardewModdingAPI.IAssetName.Name"/> (if false).</param>
        </member>
        <member name="M:StardewModdingAPI.IAssetName.StartsWith(System.String,System.Boolean,System.Boolean)">
            <summary>Get whether the asset name starts with the given value, ignoring capitalization and formatting. This can be used with a trailing slash to test for an asset folder, like <c>Data/</c>.</summary>
            <param name="prefix">The prefix to match.</param>
            <param name="allowPartialWord">Whether to match if the prefix occurs mid-word, so <c>Data/AchievementsToIgnore</c> matches prefix <c>Data/Achievements</c>. If this is false, the prefix only matches if the asset name starts with the prefix followed by a non-alphanumeric character (including <c>.</c>, <c>/</c>, or <c>\\</c>) or the end of string.</param>
            <param name="allowSubfolder">Whether to match the prefix if there's a subfolder path after it, so <c>Data/Achievements/Example</c> matches prefix <c>Data/Achievements</c>. If this is false, the prefix only matches if the asset name has no <c>/</c> or <c>\\</c> characters after the prefix.</param>
        </member>
        <member name="M:StardewModdingAPI.IAssetName.IsDirectlyUnderPath(System.String)">
            <summary>Get whether the asset is directly within the given asset path.</summary>
            <remarks>For example, <c>Characters/Dialogue/Abigail</c> is directly under <c>Characters/Dialogue</c> but not <c>Characters</c> or <c>Characters/Dialogue/Ab</c>. To allow sub-paths, use <see cref="M:StardewModdingAPI.IAssetName.StartsWith(System.String,System.Boolean,System.Boolean)"/> instead.</remarks>
            <param name="assetFolder">The asset path to check. This doesn't need a trailing slash.</param>
        </member>
        <member name="M:StardewModdingAPI.IAssetName.GetBaseAssetName">
            <summary>Get an asset name representing the <see cref="P:StardewModdingAPI.IAssetName.BaseName"/> without locale.</summary>
        </member>
        <member name="T:StardewModdingAPI.ICommandHelper">
            <summary>Provides an API for managing console commands.</summary>
        </member>
        <member name="M:StardewModdingAPI.ICommandHelper.Add(System.String,System.String,System.Action{System.String,System.String[]})">
            <summary>Add a console command.</summary>
            <param name="name">The command name, which the user must type to trigger it.</param>
            <param name="documentation">The human-readable documentation shown when the player runs the built-in 'help' command.</param>
            <param name="callback">The method to invoke when the command is triggered. This method is passed the command name and arguments submitted by the user.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="name"/> or <paramref name="callback"/> is null or empty.</exception>
            <exception cref="T:System.FormatException">The <paramref name="name"/> is not a valid format.</exception>
            <exception cref="T:System.ArgumentException">There's already a command with that name.</exception>
        </member>
        <member name="T:StardewModdingAPI.IContentPack">
            <summary>An API that provides access to a content pack.</summary>
        </member>
        <member name="P:StardewModdingAPI.IContentPack.DirectoryPath">
            <summary>The full path to the content pack's folder.</summary>
        </member>
        <member name="P:StardewModdingAPI.IContentPack.Manifest">
            <summary>The content pack's manifest.</summary>
        </member>
        <member name="P:StardewModdingAPI.IContentPack.Translation">
            <summary>Provides translations stored in the content pack's <c>i18n</c> folder. See <see cref="P:StardewModdingAPI.IModHelper.Translation"/> for more info.</summary>
        </member>
        <member name="P:StardewModdingAPI.IContentPack.ModContent">
            <summary>An API for loading content assets from the content pack's files.</summary>
        </member>
        <member name="M:StardewModdingAPI.IContentPack.HasFile(System.String)">
            <summary>Get whether a given file exists in the content pack.</summary>
            <param name="path">The relative file path within the content pack (case-insensitive).</param>
        </member>
        <member name="M:StardewModdingAPI.IContentPack.ReadJsonFile``1(System.String)">
            <summary>Read a JSON file from the content pack folder.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="path">The relative file path within the content pack (case-insensitive).</param>
            <returns>Returns the deserialized model, or <c>null</c> if the file doesn't exist or is empty.</returns>
            <exception cref="T:System.InvalidOperationException">The <paramref name="path"/> is not relative or contains directory climbing (../).</exception>
        </member>
        <member name="M:StardewModdingAPI.IContentPack.WriteJsonFile``1(System.String,``0)">
            <summary>Save data to a JSON file in the content pack's folder.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="path">The relative file path within the content pack (case-insensitive).</param>
            <param name="data">The arbitrary data to save.</param>
            <exception cref="T:System.InvalidOperationException">The <paramref name="path"/> is not relative or contains directory climbing (../).</exception>
        </member>
        <member name="T:StardewModdingAPI.IContentPackHelper">
            <summary>Provides an API for managing content packs.</summary>
        </member>
        <member name="M:StardewModdingAPI.IContentPackHelper.GetOwned">
            <summary>Get all content packs loaded for this mod.</summary>
        </member>
        <member name="M:StardewModdingAPI.IContentPackHelper.CreateFake(System.String)">
            <summary>Create a temporary content pack to read files from a directory, using randomized manifest fields. Temporary content packs will not appear in the SMAPI log and update checks will not be performed.</summary>
            <param name="directoryPath">The absolute directory path containing the content pack files.</param>
        </member>
        <member name="M:StardewModdingAPI.IContentPackHelper.CreateTemporary(System.String,System.String,System.String,System.String,System.String,StardewModdingAPI.ISemanticVersion)">
            <summary>Create a temporary content pack to read files from a directory. Temporary content packs will not appear in the SMAPI log and update checks will not be performed.</summary>
            <param name="directoryPath">The absolute directory path containing the content pack files.</param>
            <param name="id">The content pack's unique ID.</param>
            <param name="name">The content pack name.</param>
            <param name="description">The content pack description.</param>
            <param name="author">The content pack author's name.</param>
            <param name="version">The content pack version.</param>
        </member>
        <member name="T:StardewModdingAPI.ICursorPosition">
            <summary>Represents a cursor position in the different coordinate systems.</summary>
        </member>
        <member name="P:StardewModdingAPI.ICursorPosition.AbsolutePixels">
            <summary>The pixel position relative to the top-left corner of the in-game map, adjusted for zoom but not UI scaling. See also <see cref="M:StardewModdingAPI.ICursorPosition.GetScaledAbsolutePixels"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.ICursorPosition.ScreenPixels">
            <summary>The pixel position relative to the top-left corner of the visible screen, adjusted for zoom but not UI scaling. See also <see cref="M:StardewModdingAPI.ICursorPosition.GetScaledScreenPixels"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.ICursorPosition.Tile">
            <summary>The tile position under the cursor relative to the top-left corner of the map.</summary>
        </member>
        <member name="P:StardewModdingAPI.ICursorPosition.GrabTile">
            <summary>The tile position that the game considers under the cursor for purposes of clicking actions. This may be different than <see cref="P:StardewModdingAPI.ICursorPosition.Tile"/> if that's too far from the player.</summary>
        </member>
        <member name="M:StardewModdingAPI.ICursorPosition.GetScaledAbsolutePixels">
            <summary>Get the <see cref="P:StardewModdingAPI.ICursorPosition.AbsolutePixels"/>, adjusted for UI scaling if needed. This is only different if <see cref="F:StardewValley.Game1.uiMode"/> is true.</summary>
        </member>
        <member name="M:StardewModdingAPI.ICursorPosition.GetScaledScreenPixels">
            <summary>Get the <see cref="P:StardewModdingAPI.ICursorPosition.ScreenPixels"/>, adjusted for UI scaling if needed. This is only different if <see cref="F:StardewValley.Game1.uiMode"/> is true.</summary>
        </member>
        <member name="T:StardewModdingAPI.IDataHelper">
            <summary>Provides an API for reading and storing local mod data.</summary>
        </member>
        <member name="M:StardewModdingAPI.IDataHelper.ReadJsonFile``1(System.String)">
            <summary>Read data from a JSON file in the mod's folder.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="path">The file path relative to the mod folder.</param>
            <returns>Returns the deserialized model, or <c>null</c> if the file doesn't exist or is empty.</returns>
            <exception cref="T:System.InvalidOperationException">The <paramref name="path"/> is not relative or contains directory climbing (../).</exception>
        </member>
        <member name="M:StardewModdingAPI.IDataHelper.WriteJsonFile``1(System.String,``0)">
            <summary>Save data to a JSON file in the mod's folder.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="path">The file path relative to the mod folder.</param>
            <param name="data">The arbitrary data to save, or <c>null</c> to delete the file.</param>
            <exception cref="T:System.InvalidOperationException">The <paramref name="path"/> is not relative or contains directory climbing (../).</exception>
        </member>
        <member name="M:StardewModdingAPI.IDataHelper.ReadSaveData``1(System.String)">
            <summary>Read arbitrary data stored in the current save slot. This is only possible if a save has been loaded.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="key">The unique key identifying the data.</param>
            <returns>Returns the parsed data, or <c>null</c> if the entry doesn't exist or is empty.</returns>
            <exception cref="T:System.InvalidOperationException">The player hasn't loaded a save file yet or isn't the main player.</exception>
        </member>
        <member name="M:StardewModdingAPI.IDataHelper.WriteSaveData``1(System.String,``0)">
            <summary>Save arbitrary data to the current save slot. This is only possible if a save has been loaded, and the data will be lost if the player exits without saving the current day.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="key">The unique key identifying the data.</param>
            <param name="data">The arbitrary data to save, or <c>null</c> to remove the entry.</param>
            <exception cref="T:System.InvalidOperationException">The player hasn't loaded a save file yet or isn't the main player.</exception>
        </member>
        <member name="M:StardewModdingAPI.IDataHelper.ReadGlobalData``1(System.String)">
            <summary>Read arbitrary data stored on the local computer, synchronised by GOG/Steam if applicable.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="key">The unique key identifying the data.</param>
            <returns>Returns the parsed data, or <c>null</c> if the entry doesn't exist or is empty.</returns>
        </member>
        <member name="M:StardewModdingAPI.IDataHelper.WriteGlobalData``1(System.String,``0)">
            <summary>Save arbitrary data to the local computer, synchronised by GOG/Steam if applicable.</summary>
            <typeparam name="TModel">The model type. This should be a plain class that has public properties for the data you want. The properties can be complex types.</typeparam>
            <param name="key">The unique key identifying the data.</param>
            <param name="data">The arbitrary data to save, or <c>null</c> to delete the file.</param>
        </member>
        <member name="T:StardewModdingAPI.IGameContentHelper">
            <summary>Provides an API for loading content assets from the game's <c>Content</c> folder or via <see cref="P:StardewModdingAPI.Events.IModEvents.Content"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.IGameContentHelper.CurrentLocale">
            <summary>The game's current locale code (like <c>pt-BR</c>).</summary>
        </member>
        <member name="P:StardewModdingAPI.IGameContentHelper.CurrentLocaleConstant">
            <summary>The game's current locale as an enum value.</summary>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.ParseAssetName(System.String)">
            <summary>Parse a raw asset name.</summary>
            <param name="rawName">The raw asset name to parse.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="rawName"/> is null or empty.</exception>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.Load``1(System.String)">
            <summary>Load content from the game folder or mod folder (if not already cached), and return it. When loading a <c>.png</c> file, this must be called outside the game's draw loop.</summary>
            <typeparam name="T">The expected data type. The main supported types are <see cref="T:xTile.Map"/>, <see cref="T:Microsoft.Xna.Framework.Graphics.Texture2D"/>, dictionaries, and lists; other types may be supported by the game's content pipeline.</typeparam>
            <param name="assetName">The asset name to load.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="assetName"/> is empty or contains invalid characters.</exception>
            <exception cref="T:Microsoft.Xna.Framework.Content.ContentLoadException">The content asset couldn't be loaded (e.g. because it doesn't exist).</exception>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.Load``1(StardewModdingAPI.IAssetName)">
            <summary>Load content from the game folder or mod folder (if not already cached), and return it. When loading a <c>.png</c> file, this must be called outside the game's draw loop.</summary>
            <typeparam name="T">The expected data type. The main supported types are <see cref="T:xTile.Map"/>, <see cref="T:Microsoft.Xna.Framework.Graphics.Texture2D"/>, dictionaries, and lists; other types may be supported by the game's content pipeline.</typeparam>
            <param name="assetName">The asset name to load.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="assetName"/> is empty or contains invalid characters.</exception>
            <exception cref="T:Microsoft.Xna.Framework.Content.ContentLoadException">The content asset couldn't be loaded (e.g. because it doesn't exist).</exception>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.InvalidateCache(System.String)">
            <summary>Remove an asset from the content cache so it's reloaded on the next request. This will reload core game assets if needed, but references to the former asset will still show the previous content.</summary>
            <param name="assetName">The asset key to invalidate in the content folder.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="assetName"/> is empty or contains invalid characters.</exception>
            <returns>Returns whether the given asset key was cached.</returns>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.InvalidateCache(StardewModdingAPI.IAssetName)">
            <summary>Remove an asset from the content cache so it's reloaded on the next request. This will reload core game assets if needed, but references to the former asset will still show the previous content.</summary>
            <param name="assetName">The asset key to invalidate in the content folder.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="assetName"/> is empty or contains invalid characters.</exception>
            <returns>Returns whether the given asset key was cached.</returns>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.InvalidateCache``1">
            <summary>Remove all assets of the given type from the cache so they're reloaded on the next request. <b>This can be a very expensive operation and should only be used in very specific cases.</b> This will reload core game assets if needed, but references to the former assets will still show the previous content.</summary>
            <typeparam name="T">The asset type to remove from the cache.</typeparam>
            <returns>Returns whether any assets were invalidated.</returns>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.InvalidateCache(System.Func{StardewModdingAPI.IAssetInfo,System.Boolean})">
            <summary>Remove matching assets from the content cache so they're reloaded on the next request. This will reload core game assets if needed, but references to the former asset will still show the previous content.</summary>
            <param name="predicate">A predicate matching the assets to invalidate.</param>
            <returns>Returns whether any cache entries were invalidated.</returns>
        </member>
        <member name="M:StardewModdingAPI.IGameContentHelper.GetPatchHelper``1(``0,System.String)">
            <summary>Get a patch helper for arbitrary data.</summary>
            <typeparam name="T">The data type.</typeparam>
            <param name="data">The asset data.</param>
            <param name="assetName">The asset name. This is only used for tracking purposes and has no effect on the patch helper.</param>
        </member>
        <member name="T:StardewModdingAPI.IInputHelper">
            <summary>Provides an API for checking and changing input state.</summary>
        </member>
        <member name="M:StardewModdingAPI.IInputHelper.GetCursorPosition">
            <summary>Get the current cursor position.</summary>
        </member>
        <member name="M:StardewModdingAPI.IInputHelper.IsDown(StardewModdingAPI.SButton)">
            <summary>Get whether a button is currently pressed.</summary>
            <param name="button">The button.</param>
        </member>
        <member name="M:StardewModdingAPI.IInputHelper.IsSuppressed(StardewModdingAPI.SButton)">
            <summary>Get whether a button is currently suppressed, so the game won't see it.</summary>
            <param name="button">The button.</param>
        </member>
        <member name="M:StardewModdingAPI.IInputHelper.Suppress(StardewModdingAPI.SButton)">
            <summary>Prevent the game from handling a button press. This doesn't prevent other mods from receiving the event.</summary>
            <param name="button">The button to suppress.</param>
        </member>
        <member name="M:StardewModdingAPI.IInputHelper.SuppressActiveKeybinds(StardewModdingAPI.Utilities.KeybindList)">
            <summary>Suppress the keybinds which are currently down.</summary>
            <param name="keybindList">The keybind list whose active keybinds to suppress.</param>
        </member>
        <member name="M:StardewModdingAPI.IInputHelper.GetState(StardewModdingAPI.SButton)">
            <summary>Get the state of a button.</summary>
            <param name="button">The button to check.</param>
        </member>
        <member name="T:StardewModdingAPI.IMod">
            <summary>The implementation for a Stardew Valley mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMod.Helper">
            <summary>Provides simplified APIs for writing mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMod.Monitor">
            <summary>Writes messages to the console and log file.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMod.ModManifest">
            <summary>The mod's manifest.</summary>
        </member>
        <member name="M:StardewModdingAPI.IMod.Entry(StardewModdingAPI.IModHelper)">
            <summary>The mod entry point, called after the mod is first loaded.</summary>
            <param name="helper">Provides simplified APIs for writing mods.</param>
        </member>
        <member name="M:StardewModdingAPI.IMod.GetApi">
            <summary>Get an <a href="https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Integrations">API that other mods can access</a>. This is always called after <see cref="M:StardewModdingAPI.IMod.Entry(StardewModdingAPI.IModHelper)"/>, and is only called once even if multiple mods access it.</summary>
            <remarks>You can implement <see cref="M:StardewModdingAPI.IMod.GetApi"/> to provide one instance to all mods, or <see cref="M:StardewModdingAPI.IMod.GetApi(StardewModdingAPI.IModInfo)"/> to provide a separate instance per mod. These are mutually exclusive, so you can only implement one of them.</remarks>
            <remarks>Returns the API instance, or <c>null</c> if the mod has no API.</remarks>
        </member>
        <member name="M:StardewModdingAPI.IMod.GetApi(StardewModdingAPI.IModInfo)">
            <summary>Get an <a href="https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Integrations">API that other mods can access</a>. This is always called after <see cref="M:StardewModdingAPI.IMod.Entry(StardewModdingAPI.IModHelper)"/>, and is called once per mod that accesses the API (even if they access it multiple times).</summary>
            <param name="mod">The mod accessing the API.</param>
            <remarks>Returns the API instance, or <c>null</c> if the mod has no API. Note that <paramref name="mod"/> is provided for informational purposes only, and that denying API access to specific mods is strongly discouraged and may be considered abusive.</remarks>
            <inheritdoc cref="M:StardewModdingAPI.IMod.GetApi" include="/Remarks" />
        </member>
        <member name="T:StardewModdingAPI.IModContentHelper">
            <summary>Provides an API for loading content assets from the current mod's folder.</summary>
        </member>
        <member name="M:StardewModdingAPI.IModContentHelper.Load``1(System.String)">
            <summary>Load content from the mod folder and return it. When loading a <c>.png</c> file, this must be called outside the game's draw loop.</summary>
            <typeparam name="T">The expected data type. The main supported types are <see cref="T:xTile.Map"/>, <see cref="T:Microsoft.Xna.Framework.Graphics.Texture2D"/>, <see cref="T:StardewModdingAPI.IRawTextureData"/>, and data structures; other types may be supported by the game's content pipeline.</typeparam>
            <param name="relativePath">The local path to a content file relative to the mod folder.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="relativePath"/> is empty or contains invalid characters.</exception>
            <exception cref="T:Microsoft.Xna.Framework.Content.ContentLoadException">The content asset couldn't be loaded (e.g. because it doesn't exist).</exception>
        </member>
        <member name="M:StardewModdingAPI.IModContentHelper.GetInternalAssetName(System.String)">
            <summary>Get the internal asset name which allows loading a mod file through any of the game's content managers. This can be used when passing asset names directly to the game (e.g. for map tilesheets), but should be avoided if you can use <see cref="M:StardewModdingAPI.IModContentHelper.Load``1(System.String)"/> instead. This does not validate whether the asset exists.</summary>
            <param name="relativePath">The local path to a content file relative to the mod folder.</param>
            <exception cref="T:System.ArgumentException">The <paramref name="relativePath"/> is empty or contains invalid characters.</exception>
        </member>
        <member name="M:StardewModdingAPI.IModContentHelper.GetPatchHelper``1(``0,System.String)">
            <summary>Get a patch helper for arbitrary data.</summary>
            <typeparam name="T">The data type.</typeparam>
            <param name="data">The asset data.</param>
            <param name="relativePath">The local path to the content file being edited relative to the mod folder. This is only used for tracking purposes and has no effect on the patch helper.</param>
        </member>
        <member name="T:StardewModdingAPI.IModHelper">
            <summary>Provides simplified APIs for writing mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.DirectoryPath">
            <summary>The full path to the mod's folder.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.Events">
            <summary>Manages access to events raised by SMAPI, which let your mod react when something happens in the game.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.ConsoleCommands">
            <summary>An API for managing console commands.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.GameContent">
            <summary>An API for loading content assets from the game's <c>Content</c> folder or using the <see cref="P:StardewModdingAPI.Events.IModEvents.Content"/> events.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.ModContent">
            <summary>An API for loading content assets from your mod's files.</summary>
            <remarks>This API is intended for reading content assets from the mod files (like game data, images, etc); see also <see cref="P:StardewModdingAPI.IModHelper.Data"/> which is intended for persisting internal mod data.</remarks>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.ContentPacks">
            <summary>An API for managing content packs.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.Data">
            <summary>An API for reading and writing persistent mod data.</summary>
            <remarks>This API is intended for persisting internal mod data; see also <see cref="P:StardewModdingAPI.IModHelper.ModContent"/> which is intended for reading content assets (like game data, images, etc).</remarks>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.Input">
            <summary>An API for checking and changing input state.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.Reflection">
            <summary>Simplifies access to private game code.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.ModRegistry">
            <summary>Metadata about loaded mods.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.Multiplayer">
            <summary>Provides multiplayer utilities.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModHelper.Translation">
            <summary>Provides translations stored in the mod's <c>i18n</c> folder, with one file per locale (like <c>en.json</c>) containing a flat key => value structure. Translations are fetched with locale fallback, so missing translations are filled in from broader locales (like <c>pt-BR.json</c> &lt; <c>pt.json</c> &lt; <c>default.json</c>).</summary>
        </member>
        <member name="M:StardewModdingAPI.IModHelper.ReadConfig``1">
            <summary>Read the mod's configuration file (and create it if needed).</summary>
            <typeparam name="TConfig">The config class type. This should be a plain class that has public properties for the settings you want. These can be complex types.</typeparam>
        </member>
        <member name="M:StardewModdingAPI.IModHelper.WriteConfig``1(``0)">
            <summary>Save to the mod's configuration file.</summary>
            <typeparam name="TConfig">The config class type.</typeparam>
            <param name="config">The config settings to save.</param>
        </member>
        <member name="T:StardewModdingAPI.IModInfo">
            <summary>Metadata for a loaded mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModInfo.Manifest">
            <summary>The mod manifest.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModInfo.IsContentPack">
            <summary>Whether the mod is a content pack.</summary>
        </member>
        <member name="T:StardewModdingAPI.IModLinked">
            <summary>An instance linked to a mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.IModLinked.ModID">
            <summary>The unique ID of the mod for which the instance was created.</summary>
        </member>
        <member name="T:StardewModdingAPI.IModRegistry">
            <summary>Provides an API for fetching metadata about loaded mods.</summary>
        </member>
        <member name="M:StardewModdingAPI.IModRegistry.GetAll">
            <summary>Get metadata for all loaded mods.</summary>
        </member>
        <member name="M:StardewModdingAPI.IModRegistry.Get(System.String)">
            <summary>Get metadata for a loaded mod.</summary>
            <param name="uniqueID">The mod's unique ID.</param>
            <returns>Returns the matching mod's metadata, or <c>null</c> if not found.</returns>
        </member>
        <member name="M:StardewModdingAPI.IModRegistry.IsLoaded(System.String)">
            <summary>Get whether a mod has been loaded.</summary>
            <param name="uniqueID">The mod's unique ID.</param>
        </member>
        <member name="M:StardewModdingAPI.IModRegistry.GetApi(System.String)">
            <summary>Get the API provided by a mod, or <c>null</c> if it has none. This signature requires using the <see cref="P:StardewModdingAPI.IModHelper.Reflection"/> API to access the API's properties and methods.</summary>
            <param name="uniqueID">The mod's unique ID.</param>
        </member>
        <member name="M:StardewModdingAPI.IModRegistry.GetApi``1(System.String)">
            <summary>Get the API provided by a mod, mapped to a given interface which specifies the expected properties and methods. If the mod has no API or it's not compatible with the given interface, get <c>null</c>.</summary>
            <typeparam name="TInterface">The interface which matches the properties and methods you intend to access.</typeparam>
            <param name="uniqueID">The mod's unique ID.</param>
        </member>
        <member name="T:StardewModdingAPI.IMonitor">
            <summary>Encapsulates monitoring and logging for a given module.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMonitor.IsVerbose">
            <summary>Whether verbose logging is enabled. This enables more detailed diagnostic messages than are normally needed.</summary>
        </member>
        <member name="M:StardewModdingAPI.IMonitor.Log(System.String,StardewModdingAPI.LogLevel)">
            <summary>Log a message for the player or developer.</summary>
            <param name="message">The message to log.</param>
            <param name="level">The log severity level.</param>
        </member>
        <member name="M:StardewModdingAPI.IMonitor.LogOnce(System.String,StardewModdingAPI.LogLevel)">
            <summary>Log a message for the player or developer, but only if it hasn't already been logged since the last game launch.</summary>
            <param name="message">The message to log.</param>
            <param name="level">The log severity level.</param>
        </member>
        <member name="M:StardewModdingAPI.IMonitor.VerboseLog(System.String)">
            <summary>Log a message that only appears when <see cref="P:StardewModdingAPI.IMonitor.IsVerbose"/> is enabled.</summary>
            <param name="message">The message to log.</param>
        </member>
        <member name="M:StardewModdingAPI.IMonitor.VerboseLog(StardewModdingAPI.Framework.Logging.VerboseLogStringHandler@)">
            <summary>Log a message that only appears when <see cref="P:StardewModdingAPI.IMonitor.IsVerbose"/> is enabled.</summary>
            <param name="message">The message to log.</param>
        </member>
        <member name="T:StardewModdingAPI.IMultiplayerHelper">
            <summary>Provides multiplayer utilities.</summary>
        </member>
        <member name="M:StardewModdingAPI.IMultiplayerHelper.GetNewID">
            <summary>Get a new multiplayer ID.</summary>
        </member>
        <member name="M:StardewModdingAPI.IMultiplayerHelper.GetActiveLocations">
            <summary>Get the locations which are being actively synced from the host.</summary>
        </member>
        <member name="M:StardewModdingAPI.IMultiplayerHelper.GetConnectedPlayer(System.Int64)">
            <summary>Get a connected player.</summary>
            <param name="id">The player's unique ID.</param>
            <returns>Returns the connected player, or <c>null</c> if no such player is connected.</returns>
        </member>
        <member name="M:StardewModdingAPI.IMultiplayerHelper.GetConnectedPlayers">
            <summary>Get all connected players.</summary>
        </member>
        <member name="M:StardewModdingAPI.IMultiplayerHelper.SendMessage``1(``0,System.String,System.String[],System.Int64[])">
            <summary>Send a message to mods installed by connected players.</summary>
            <typeparam name="TMessage">The data type. This can be a class with a default constructor, or a value type.</typeparam>
            <param name="message">The data to send over the network.</param>
            <param name="messageType">A message type which receiving mods can use to decide whether it's the one they want to handle, like <c>SetPlayerLocation</c>. This doesn't need to be globally unique, since mods should check the originating mod ID.</param>
            <param name="modIDs">The mod IDs which should receive the message on the destination computers, or <c>null</c> for all mods. Specifying mod IDs is recommended to improve performance, unless it's a general-purpose broadcast.</param>
            <param name="playerIDs">The <see cref="P:StardewValley.Farmer.UniqueMultiplayerID" /> values for the players who should receive the message, or <c>null</c> for all players. If you don't need to broadcast to all players, specifying player IDs is recommended to reduce latency.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="message"/> or <paramref name="messageType" /> is null.</exception>
        </member>
        <member name="T:StardewModdingAPI.IMultiplayerPeer">
            <summary>Metadata about a connected player.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.PlayerID">
            <summary>The player's unique ID.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.IsHost">
            <summary>Whether this is a connection to the host player.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.IsSplitScreen">
            <summary>Whether this a local player on the same computer in split-screen mote.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.HasSmapi">
            <summary>Whether the player has SMAPI installed.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.ScreenID">
            <summary>The player's screen ID, if applicable.</summary>
            <remarks>See <see cref="P:StardewModdingAPI.Context.ScreenId"/> for details. This is only visible to players in split-screen mode. A remote player won't see this value, even if the other players are in split-screen mode.</remarks>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.Platform">
            <summary>The player's OS platform, if <see cref="P:StardewModdingAPI.IMultiplayerPeer.HasSmapi"/> is true.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.GameVersion">
            <summary>The installed version of Stardew Valley, if <see cref="P:StardewModdingAPI.IMultiplayerPeer.HasSmapi"/> is true.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.ApiVersion">
            <summary>The installed version of SMAPI, if <see cref="P:StardewModdingAPI.IMultiplayerPeer.HasSmapi"/> is true.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeer.Mods">
            <summary>The installed mods, if <see cref="P:StardewModdingAPI.IMultiplayerPeer.HasSmapi"/> is true.</summary>
        </member>
        <member name="M:StardewModdingAPI.IMultiplayerPeer.GetMod(System.String)">
            <summary>Get metadata for a mod installed by the player.</summary>
            <param name="id">The unique mod ID.</param>
            <returns>Returns the mod info, or <c>null</c> if the player doesn't have that mod.</returns>
        </member>
        <member name="T:StardewModdingAPI.IMultiplayerPeerMod">
            <summary>Metadata about a mod installed by a connected player.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeerMod.Name">
            <summary>The mod's display name.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeerMod.ID">
            <summary>The unique mod ID.</summary>
        </member>
        <member name="P:StardewModdingAPI.IMultiplayerPeerMod.Version">
            <summary>The mod version.</summary>
        </member>
        <member name="T:StardewModdingAPI.IRawTextureData">
            <summary>The raw data for an image read from the filesystem.</summary>
        </member>
        <member name="P:StardewModdingAPI.IRawTextureData.Width">
            <summary>The image width.</summary>
        </member>
        <member name="P:StardewModdingAPI.IRawTextureData.Height">
            <summary>The image height.</summary>
        </member>
        <member name="P:StardewModdingAPI.IRawTextureData.Data">
            <summary>The loaded image data.</summary>
        </member>
        <member name="T:StardewModdingAPI.IReflectedField`1">
            <summary>A field obtained through reflection.</summary>
            <typeparam name="TValue">The field value type.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.IReflectedField`1.FieldInfo">
            <summary>The reflection metadata.</summary>
        </member>
        <member name="M:StardewModdingAPI.IReflectedField`1.GetValue">
            <summary>Get the field value.</summary>
        </member>
        <member name="M:StardewModdingAPI.IReflectedField`1.SetValue(`0)">
            <summary>Set the field value.</summary>
        </member>
        <member name="T:StardewModdingAPI.IReflectedMethod">
            <summary>A method obtained through reflection.</summary>
        </member>
        <member name="P:StardewModdingAPI.IReflectedMethod.MethodInfo">
            <summary>The reflection metadata.</summary>
        </member>
        <member name="M:StardewModdingAPI.IReflectedMethod.Invoke``1(System.Object[])">
            <summary>Invoke the method.</summary>
            <typeparam name="TValue">The return type.</typeparam>
            <param name="arguments">The method arguments to pass in.</param>
        </member>
        <member name="M:StardewModdingAPI.IReflectedMethod.Invoke(System.Object[])">
            <summary>Invoke the method.</summary>
            <param name="arguments">The method arguments to pass in.</param>
        </member>
        <member name="T:StardewModdingAPI.IReflectedProperty`1">
            <summary>A property obtained through reflection.</summary>
            <typeparam name="TValue">The property value type.</typeparam>
        </member>
        <member name="P:StardewModdingAPI.IReflectedProperty`1.PropertyInfo">
            <summary>The reflection metadata.</summary>
        </member>
        <member name="M:StardewModdingAPI.IReflectedProperty`1.GetValue">
            <summary>Get the property value.</summary>
        </member>
        <member name="M:StardewModdingAPI.IReflectedProperty`1.SetValue(`0)">
            <summary>Set the property value.</summary>
        </member>
        <member name="T:StardewModdingAPI.IReflectionHelper">
            <summary>Provides an API for accessing inaccessible code.</summary>
        </member>
        <member name="M:StardewModdingAPI.IReflectionHelper.GetField``1(System.Object,System.String,System.Boolean)">
            <summary>Get an instance field.</summary>
            <typeparam name="TValue">The field type.</typeparam>
            <param name="obj">The object which has the field.</param>
            <param name="name">The field name.</param>
            <param name="required">Whether to throw an exception if the field isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the return value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the field doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target field doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.IReflectionHelper.GetField``1(System.Type,System.String,System.Boolean)">
            <summary>Get a static field.</summary>
            <typeparam name="TValue">The field type.</typeparam>
            <param name="type">The type which has the field.</param>
            <param name="name">The field name.</param>
            <param name="required">Whether to throw an exception if the field isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the return value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the field doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target field doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.IReflectionHelper.GetProperty``1(System.Object,System.String,System.Boolean)">
            <summary>Get an instance property.</summary>
            <typeparam name="TValue">The property type.</typeparam>
            <param name="obj">The object which has the property.</param>
            <param name="name">The property name.</param>
            <param name="required">Whether to throw an exception if the property isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the return value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the property doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target property doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.IReflectionHelper.GetProperty``1(System.Type,System.String,System.Boolean)">
            <summary>Get a static property.</summary>
            <typeparam name="TValue">The property type.</typeparam>
            <param name="type">The type which has the property.</param>
            <param name="name">The property name.</param>
            <param name="required">Whether to throw an exception if the property isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the return value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the property doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target property doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.IReflectionHelper.GetMethod(System.Object,System.String,System.Boolean)">
            <summary>Get an instance method.</summary>
            <param name="obj">The object which has the method.</param>
            <param name="name">The method name.</param>
            <param name="required">Whether to throw an exception if the method isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the return value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the method doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target method doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="M:StardewModdingAPI.IReflectionHelper.GetMethod(System.Type,System.String,System.Boolean)">
            <summary>Get a static method.</summary>
            <param name="type">The type which has the method.</param>
            <param name="name">The method name.</param>
            <param name="required">Whether to throw an exception if the method isn't found. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the return value non-nullable.</strong></param>
            <returns>Returns the method wrapper, or <c>null</c> if <paramref name="required"/> is <c>false</c> and the method doesn't exist.</returns>
            <exception cref="T:System.InvalidOperationException">The target method doesn't exist, and <paramref name="required"/> is true.</exception>
        </member>
        <member name="T:StardewModdingAPI.ITranslationHelper">
            <summary>Provides translations stored in the mod's <c>i18n</c> folder, with one file per locale (like <c>en.json</c>) containing a flat key => value structure. Translations are fetched with locale fallback, so missing translations are filled in from broader locales (like <c>pt-BR.json</c> &lt; <c>pt.json</c> &lt; <c>default.json</c>).</summary>
        </member>
        <member name="P:StardewModdingAPI.ITranslationHelper.Locale">
            <summary>The current locale code like <c>fr-FR</c>, or an empty string for English.</summary>
        </member>
        <member name="P:StardewModdingAPI.ITranslationHelper.LocaleEnum">
            <summary>The game's current language code.</summary>
        </member>
        <member name="M:StardewModdingAPI.ITranslationHelper.GetTranslations">
            <summary>Get all translations for the current locale.</summary>
        </member>
        <member name="M:StardewModdingAPI.ITranslationHelper.Get(System.String)">
            <summary>Get a translation for the current locale.</summary>
            <param name="key">The translation key.</param>
        </member>
        <member name="M:StardewModdingAPI.ITranslationHelper.Get(System.String,System.Object)">
            <summary>Get a translation for the current locale.</summary>
            <param name="key">The translation key.</param>
            <param name="tokens">An object containing token key/value pairs. This can be an anonymous object (like <c>new { value = 42, name = "Cranberries" }</c>), a dictionary, or a class instance.</param>
        </member>
        <member name="M:StardewModdingAPI.ITranslationHelper.GetInAllLocales(System.String,System.Boolean)">
            <summary>Get a translation in every locale for which it's defined.</summary>
            <param name="key">The translation key.</param>
            <param name="withFallback">Whether to add duplicate translations for locale fallback. For example, if a translation is defined in <c>default.json</c> but not <c>fr.json</c>, setting this to true will add a <c>fr</c> entry which duplicates the default text.</param>
        </member>
        <member name="T:StardewModdingAPI.LogLevel">
            <summary>The log severity levels.</summary>
        </member>
        <member name="F:StardewModdingAPI.LogLevel.Trace">
            <summary>Tracing info intended for developers.</summary>
        </member>
        <member name="F:StardewModdingAPI.LogLevel.Debug">
            <summary>Troubleshooting info that may be relevant to the player.</summary>
        </member>
        <member name="F:StardewModdingAPI.LogLevel.Info">
            <summary>Info relevant to the player. This should be used judiciously.</summary>
        </member>
        <member name="F:StardewModdingAPI.LogLevel.Warn">
            <summary>An issue the player should be aware of. This should be used rarely.</summary>
        </member>
        <member name="F:StardewModdingAPI.LogLevel.Error">
            <summary>A message indicating something went wrong.</summary>
        </member>
        <member name="F:StardewModdingAPI.LogLevel.Alert">
            <summary>Important information to highlight for the player when player action is needed (e.g. new version available). This should be used rarely to avoid alert fatigue.</summary>
        </member>
        <member name="T:StardewModdingAPI.Metadata.CoreAssetPropagator">
            <summary>Propagates changes to core assets to the game state.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.CoreAssetPropagator.MainContentManager">
            <summary>The main content manager through which to reload assets.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.CoreAssetPropagator.DisposableContentManager">
            <summary>An internal content manager used only for asset propagation. See remarks on <see cref="T:StardewModdingAPI.Framework.ContentManagers.GameContentManagerForAssetPropagation"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.CoreAssetPropagator.Monitor">
            <summary>Writes messages to the console.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.CoreAssetPropagator.Multiplayer">
            <summary>The multiplayer instance whose map cache to update.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.CoreAssetPropagator.Reflection">
            <summary>Simplifies access to private game code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.CoreAssetPropagator.ParseAssetName">
            <summary>Parse a raw asset name.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.CoreAssetPropagator.WorldCache">
            <summary>A cache of world data fetched for the current tick.</summary>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.#ctor(StardewValley.LocalizedContentManager,StardewModdingAPI.Framework.ContentManagers.GameContentManagerForAssetPropagation,StardewModdingAPI.IMonitor,StardewValley.Multiplayer,StardewModdingAPI.Framework.Reflection.Reflector,System.Func{System.String,StardewModdingAPI.IAssetName})">
            <summary>Initialize the core asset data.</summary>
            <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>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.Propagate(System.Collections.Generic.IList{StardewModdingAPI.Framework.ContentManagers.IContentManager},System.Collections.Generic.IDictionary{StardewModdingAPI.IAssetName,System.Type},System.Boolean,System.Collections.Generic.IDictionary{StardewModdingAPI.IAssetName,System.Boolean}@,System.Boolean@)">
            <summary>Reload one of the game's core assets (if applicable).</summary>
            <param name="contentManagers">The content managers whose assets to update.</param>
            <param name="assets">The asset keys and types to reload.</param>
            <param name="ignoreWorld">Whether the in-game world is fully unloaded (e.g. on the title screen), so there's no need to propagate changes into the world.</param>
            <param name="propagatedAssets">A lookup of asset names to whether they've been propagated.</param>
            <param name="changedWarpRoutes">Whether the NPC pathfinding warp route cache was reloaded.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.PropagateTexture(StardewModdingAPI.IAssetName,StardewValley.LocalizedContentManager.LanguageCode,System.Collections.Generic.IList{StardewModdingAPI.Framework.ContentManagers.IContentManager},System.Boolean)">
            <summary>Propagate changes to a cached texture asset.</summary>
            <param name="assetName">The asset name to reload.</param>
            <param name="language">The language for which to get assets.</param>
            <param name="contentManagers">The content managers whose assets to update.</param>
            <param name="ignoreWorld">Whether the in-game world is fully unloaded (e.g. on the title screen), so there's no need to propagate changes into the world.</param>
            <returns>Returns whether an asset was loaded.</returns>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.PropagateOther(StardewModdingAPI.IAssetName,System.Type,System.Boolean,System.Boolean@)">
            <summary>Reload one of the game's core assets (if applicable).</summary>
            <param name="assetName">The asset name to reload.</param>
            <param name="type">The asset type to reload.</param>
            <param name="ignoreWorld">Whether the in-game world is fully unloaded (e.g. on the title screen), so there's no need to propagate changes into the world.</param>
            <param name="changedWarpRoutes">Whether the locations reachable by warps from this location changed as part of this propagation.</param>
            <returns>Returns whether an asset was loaded.</returns>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateBuildingPaintMask(StardewModdingAPI.IAssetName)">
            <summary>Update building paint mask textures.</summary>
            <param name="assetName">The asset name to update.</param>
            <returns>Returns whether any textures were updated.</returns>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdatePlayerSprites(StardewModdingAPI.IAssetName)">
            <summary>Update the sprites for matching players.</summary>
            <param name="assetName">The asset name to update.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateFarmAnimalData">
            <summary>Update the data for matching farm animals.</summary>
            <returns>Returns whether any farm animals were updated.</returns>
            <remarks>Derived from the <see cref="T:StardewValley.FarmAnimal"/> constructor.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateHairData">
            <summary>Update hair style metadata.</summary>
            <returns>Returns whether any data was updated.</returns>
            <remarks>Derived from the <see cref="M:StardewValley.Farmer.GetHairStyleMetadataFile"/> and <see cref="M:StardewValley.Farmer.GetHairStyleMetadata(System.Int32)"/>.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateNpcDialogue(StardewModdingAPI.IAssetName)">
            <summary>Update the dialogue data for matching NPCs.</summary>
            <param name="assetName">The asset name to update.</param>
            <returns>Returns whether any NPCs were updated.</returns>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateCharacterData">
            <summary>Update the character data for matching NPCs.</summary>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateNpcSchedules(StardewModdingAPI.IAssetName)">
            <summary>Update the schedules for matching NPCs.</summary>
            <param name="assetName">The asset name to update.</param>
            <returns>Returns whether any NPCs were updated.</returns>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateStringsFromCsFiles(StardewValley.LocalizedContentManager)">
            <summary>Update cached translations from the <c>Strings\StringsFromCSFiles</c> asset.</summary>
            <param name="content">The content manager through which to reload the asset.</param>
            <returns>Returns whether any data was updated.</returns>
            <remarks>Derived from the <see cref="M:StardewValley.Game1.TranslateFields"/>.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.UpdateMap(StardewModdingAPI.Metadata.CoreAssetPropagator.LocationInfo)">
            <summary>Update the map for a location.</summary>
            <param name="locationInfo">The location whose map to update.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.GetCharacters">
            <summary>Get all NPCs in the game (excluding farm animals).</summary>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.GetFarmAnimals">
            <summary>Get all farm animals in the game.</summary>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.GetLocations(System.Boolean)">
            <summary>Get all locations in the game.</summary>
            <param name="buildingInteriors">Whether to also get the interior locations for constructable buildings.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.GetLocationsWithInfo(System.Boolean)">
            <summary>Get all locations in the game.</summary>
            <param name="buildingInteriors">Whether to also get the interior locations for constructable buildings.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.IsSameBaseName(StardewModdingAPI.IAssetName,System.String)">
            <summary>Get whether two asset names are equivalent if you ignore the locale code.</summary>
            <param name="left">The first value to compare.</param>
            <param name="right">The second value to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.IsSameBaseName(StardewModdingAPI.IAssetName,StardewModdingAPI.IAssetName)">
            <summary>Get whether two asset names are equivalent if you ignore the locale code.</summary>
            <param name="left">The first value to compare.</param>
            <param name="right">The second value to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.ParseAssetNameOrNull(System.String)">
            <summary>Normalize an asset key to match the cache key and assert that it's valid, but don't raise an error for null or empty values.</summary>
            <param name="path">The asset key to normalize.</param>
        </member>
        <member name="T:StardewModdingAPI.Metadata.CoreAssetPropagator.LocationInfo">
            <summary>Metadata about a location used in asset propagation.</summary>
            <param name="Location">The location instance.</param>
            <param name="ParentBuilding">The building which contains the location, if any.</param>
        </member>
        <member name="M:StardewModdingAPI.Metadata.CoreAssetPropagator.LocationInfo.#ctor(StardewValley.GameLocation,StardewValley.Buildings.Building)">
            <summary>Metadata about a location used in asset propagation.</summary>
            <param name="Location">The location instance.</param>
            <param name="ParentBuilding">The building which contains the location, if any.</param>
        </member>
        <member name="P:StardewModdingAPI.Metadata.CoreAssetPropagator.LocationInfo.Location">
            <summary>The location instance.</summary>
        </member>
        <member name="P:StardewModdingAPI.Metadata.CoreAssetPropagator.LocationInfo.ParentBuilding">
            <summary>The building which contains the location, if any.</summary>
        </member>
        <member name="T:StardewModdingAPI.Metadata.InstructionMetadata">
            <summary>Provides CIL instruction handlers which rewrite mods for compatibility, and detect low-level mod issues like incompatible code.</summary>
        </member>
        <member name="F:StardewModdingAPI.Metadata.InstructionMetadata.ValidateReferencesToAssemblies">
            <summary>The assembly names to which to heuristically detect broken references.</summary>
            <remarks>The current implementation only works correctly with assemblies that should always be present.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Metadata.InstructionMetadata.GetHandlers(System.Boolean,System.Boolean,System.Boolean)">
            <summary>Get rewriters which detect or fix incompatible CIL instructions in mod assemblies.</summary>
            <param name="paranoidMode">Whether to detect paranoid mode issues.</param>
            <param name="rewriteMods">Whether to get handlers which rewrite mods for compatibility.</param>
            <param name="logTechnicalDetailsForBrokenMods">Whether to include more technical details about broken mods in the TRACE logs. This is mainly useful for creating compatibility rewriters.</param>
        </member>
        <member name="T:StardewModdingAPI.Mod">
            <summary>The base class for a mod.</summary>
        </member>
        <member name="P:StardewModdingAPI.Mod.Helper">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Mod.Monitor">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.Mod.ModManifest">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Mod.Entry(StardewModdingAPI.IModHelper)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Mod.GetApi">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Mod.GetApi(StardewModdingAPI.IModInfo)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.Mod.Dispose">
            <summary>Release or reset unmanaged resources.</summary>
        </member>
        <member name="M:StardewModdingAPI.Mod.Dispose(System.Boolean)">
            <summary>Release or reset unmanaged resources when the game exits. There's no guarantee this will be called on every exit.</summary>
            <param name="disposing">Whether the instance is being disposed explicitly rather than finalized. If this is false, the instance shouldn't dispose other objects since they may already be finalized.</param>
        </member>
        <member name="M:StardewModdingAPI.Mod.Finalize">
            <summary>Destruct the instance.</summary>
        </member>
        <member name="T:StardewModdingAPI.PatchMapMode">
            <summary>Indicates how a map should be patched.</summary>
        </member>
        <member name="F:StardewModdingAPI.PatchMapMode.Overlay">
            <summary>Replace matching tiles. Target tiles missing in the source area are kept as-is.</summary>
        </member>
        <member name="F:StardewModdingAPI.PatchMapMode.ReplaceByLayer">
            <summary>Replace all tiles on layers that exist in the source map.</summary>
        </member>
        <member name="F:StardewModdingAPI.PatchMapMode.Replace">
            <summary>Replace all tiles with the source map.</summary>
        </member>
        <member name="T:StardewModdingAPI.PatchMode">
            <summary>Indicates how an image should be patched.</summary>
        </member>
        <member name="F:StardewModdingAPI.PatchMode.Replace">
            <summary>Erase the original content within the area before drawing the new content.</summary>
        </member>
        <member name="F:StardewModdingAPI.PatchMode.Overlay">
            <summary>Draw the new content over the original content, so the original content shows through any transparent or semi-transparent pixels.</summary>
        </member>
        <member name="T:StardewModdingAPI.Program">
            <summary>The main entry point for SMAPI, responsible for hooking into and launching the game.</summary>
        </member>
        <member name="F:StardewModdingAPI.Program.DllSearchPath">
            <summary>The absolute path to search for SMAPI's internal DLLs.</summary>
        </member>
        <member name="F:StardewModdingAPI.Program.AssemblyPathsByName">
            <summary>The assembly paths in the search folders indexed by assembly name.</summary>
        </member>
        <member name="M:StardewModdingAPI.Program.Main(System.String[])">
            <summary>The main entry point which hooks into and launches the game.</summary>
            <param name="args">The command-line arguments.</param>
        </member>
        <member name="M:StardewModdingAPI.Program.CurrentDomain_AssemblyResolve(System.Object,System.ResolveEventArgs)">
            <summary>Method called when assembly resolution fails, which may return a manually resolved assembly.</summary>
            <param name="sender">The event sender.</param>
            <param name="e">The event arguments.</param>
        </member>
        <member name="M:StardewModdingAPI.Program.AssertGamePresent">
            <summary>Assert that the game is available.</summary>
            <remarks>This must be checked *before* any references to <see cref="T:StardewModdingAPI.Constants"/>, and this method should not reference <see cref="T:StardewModdingAPI.Constants"/> itself to avoid errors in Mono or when the game isn't present.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Program.AssertGameVersion">
            <summary>Assert that the game version is within <see cref="P:StardewModdingAPI.Constants.MinimumGameVersion"/> and <see cref="P:StardewModdingAPI.Constants.MaximumGameVersion"/>.</summary>
        </member>
        <member name="M:StardewModdingAPI.Program.AssertSmapiVersions">
            <summary>Assert that the versions of all SMAPI components are correct.</summary>
            <remarks>Players sometimes have mismatched versions (particularly when installed through Vortex), which can cause some very confusing bugs without this check.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Program.AssertDepsJson">
            <summary>Assert that SMAPI's <c>StardewModdingAPI.deps.json</c> matches <c>Stardew Valley.deps.json</c>, fixing it if necessary.</summary>
            <remarks>This is needed to resolve native DLLs like libSkiaSharp.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Program.Start(System.String[])">
            <summary>Initialize SMAPI and launch the game.</summary>
            <param name="args">The command-line arguments.</param>
            <remarks>This method is separate from <see cref="M:StardewModdingAPI.Program.Main(System.String[])"/> because that can't contain any references to assemblies loaded by <see cref="M:StardewModdingAPI.Program.CurrentDomain_AssemblyResolve(System.Object,System.ResolveEventArgs)"/> (e.g. via <see cref="T:StardewModdingAPI.Constants"/>), or Mono will incorrectly show an assembly resolution error before assembly resolution is set up.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Program.PrintErrorAndExit(System.String,System.String)">
            <summary>Write an error directly to the console and exit.</summary>
            <param name="message">The error message to display.</param>
            <param name="technicalMessage">An additional message to log with technical details.</param>
        </member>
        <member name="M:StardewModdingAPI.Program.PressAnyKeyToExit(System.Boolean)">
            <summary>Show a 'press any key to exit' message, and exit when they press a key.</summary>
            <param name="showMessage">Whether to print a 'press any key to exit' message to the console.</param>
        </member>
        <member name="T:StardewModdingAPI.SButton">
            <summary>A unified button constant which includes all controller, keyboard, and mouse buttons.</summary>
            <remarks>Derived from <see cref="T:Microsoft.Xna.Framework.Input.Keys"/>, <see cref="T:Microsoft.Xna.Framework.Input.Buttons"/>, and <c>System.Windows.Forms.MouseButtons</c>.</remarks>
        </member>
        <member name="F:StardewModdingAPI.SButton.None">
            <summary>No valid key.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MouseLeft">
            <summary>The left mouse button.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MouseRight">
            <summary>The right mouse button.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MouseMiddle">
            <summary>The middle mouse button.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MouseX1">
            <summary>The first mouse XButton.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MouseX2">
            <summary>The second mouse XButton.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ControllerA">
            <summary>The 'A' button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ControllerB">
            <summary>The 'B' button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ControllerX">
            <summary>The 'X' button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ControllerY">
            <summary>The 'Y' button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ControllerBack">
            <summary>The back button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ControllerStart">
            <summary>The start button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.DPadUp">
            <summary>The up button on the directional pad of a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.DPadDown">
            <summary>The down button on the directional pad of a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.DPadLeft">
            <summary>The left button on the directional pad of a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.DPadRight">
            <summary>The right button on the directional pad of a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftShoulder">
            <summary>The left bumper (shoulder) button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightShoulder">
            <summary>The right bumper (shoulder) button on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftTrigger">
            <summary>The left trigger on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightTrigger">
            <summary>The right trigger on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftStick">
            <summary>The left analog stick on a controller (when pressed).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightStick">
            <summary>The right analog stick on a controller (when pressed).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BigButton">
            <summary>The 'big button' on a controller.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftThumbstickLeft">
            <summary>The left analog stick on a controller (when pushed left).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftThumbstickRight">
            <summary>The left analog stick on a controller (when pushed right).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftThumbstickDown">
            <summary>The left analog stick on a controller (when pushed down).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftThumbstickUp">
            <summary>The left analog stick on a controller (when pushed up).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightThumbstickLeft">
            <summary>The right analog stick on a controller (when pushed left).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightThumbstickRight">
            <summary>The right analog stick on a controller (when pushed right).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightThumbstickDown">
            <summary>The right analog stick on a controller (when pushed down).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightThumbstickUp">
            <summary>The right analog stick on a controller (when pushed up).</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.A">
            <summary>The A button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Add">
            <summary>The Add button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Apps">
            <summary>The Applications button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Attn">
            <summary>The Attn button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.B">
            <summary>The B button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Back">
            <summary>The Backspace button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BrowserBack">
            <summary>The Browser Back button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BrowserFavorites">
            <summary>The Browser Favorites button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BrowserForward">
            <summary>The Browser Favorites button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BrowserHome">
            <summary>The Browser Home button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BrowserRefresh">
            <summary>The Browser Refresh button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BrowserSearch">
            <summary>The Browser Search button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.BrowserStop">
            <summary>The Browser Stop button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.C">
            <summary>The C button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.CapsLock">
            <summary>The Caps Lock button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ChatPadGreen">
            <summary>The Green ChatPad button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ChatPadOrange">
            <summary>The Orange ChatPad button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Crsel">
            <summary>The CrSel button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D">
            <summary>The D button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D0">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D1">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D2">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D3">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D4">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D5">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D6">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D7">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D8">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.D9">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Decimal">
            <summary>The Decimal button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Delete">
            <summary>The Delete button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Divide">
            <summary>The Divide button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Down">
            <summary>The Down arrow button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.E">
            <summary>The E button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.End">
            <summary>The End button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Enter">
            <summary>The Enter button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.EraseEof">
            <summary>The Erase EOF button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Escape">
            <summary>The Escape button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Execute">
            <summary>The Execute button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Exsel">
            <summary>The ExSel button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F">
            <summary>The F button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F1">
            <summary>The F1 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F10">
            <summary>The F10 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F11">
            <summary>The F11 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F12">
            <summary>The F12 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F13">
            <summary>The F13 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F14">
            <summary>The F14 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F15">
            <summary>The F15 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F16">
            <summary>The F16 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F17">
            <summary>The F17 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F18">
            <summary>The F18 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F19">
            <summary>The F19 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F2">
            <summary>The F2 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F20">
            <summary>The F20 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F21">
            <summary>The F21 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F22">
            <summary>The F22 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F23">
            <summary>The F23 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F24">
            <summary>The F24 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F3">
            <summary>The F3 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F4">
            <summary>The F4 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F5">
            <summary>The F5 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F6">
            <summary>The F6 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F7">
            <summary>The F7 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F8">
            <summary>The F8 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.F9">
            <summary>The F9 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.G">
            <summary>The G button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.H">
            <summary>The H button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Help">
            <summary>The Help button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Home">
            <summary>The Home button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.I">
            <summary>The I button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ImeConvert">
            <summary>The IME Convert button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ImeNoConvert">
            <summary>The IME NoConvert button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Insert">
            <summary>The INS button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.J">
            <summary>The J button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.K">
            <summary>The K button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Kana">
            <summary>The Kana button on a Japanese keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Kanji">
            <summary>The Kanji button on a Japanese keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.L">
            <summary>The L button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LaunchApplication1">
            <summary>The Start Applications 1 button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LaunchApplication2">
            <summary>The Start Applications 2 button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LaunchMail">
            <summary>The Start Mail button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Left">
            <summary>The Left arrow button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftAlt">
            <summary>The Left Alt button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftControl">
            <summary>The Left Control button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftShift">
            <summary>The Left Shift button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.LeftWindows">
            <summary>The Left Windows button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.M">
            <summary>The M button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MediaNextTrack">
            <summary>The MediaNextTrack button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MediaPlayPause">
            <summary>The MediaPlayPause button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MediaPreviousTrack">
            <summary>The MediaPreviousTrack button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.MediaStop">
            <summary>The MediaStop button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Multiply">
            <summary>The Multiply button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.N">
            <summary>The N button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumLock">
            <summary>The Num Lock button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad0">
            <summary>The Numeric keypad 0 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad1">
            <summary>The Numeric keypad 1 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad2">
            <summary>The Numeric keypad 2 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad3">
            <summary>The Numeric keypad 3 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad4">
            <summary>The Numeric keypad 4 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad5">
            <summary>The Numeric keypad 5 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad6">
            <summary>The Numeric keypad 6 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad7">
            <summary>The Numeric keypad 7 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad8">
            <summary>The Numeric keypad 8 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.NumPad9">
            <summary>The Numeric keypad 9 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.O">
            <summary>The O button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Oem8">
            <summary>A miscellaneous button on a keyboard; can vary by keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemAuto">
            <summary>The OEM Auto button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemBackslash">
            <summary>The OEM Angle Bracket or Backslash button on the RT 102 keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemClear">
            <summary>The Clear button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemCloseBrackets">
            <summary>The OEM Close Bracket button on a US standard keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemComma">
            <summary>The ',' button on a keyboard in any country/region in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemCopy">
            <summary>The OEM Copy button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemEnlW">
            <summary>The OEM Enlarge Window button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemMinus">
            <summary>The '-' button on a keyboard in any country/region in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemOpenBrackets">
            <summary>The OEM Open Bracket button on a US standard keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemPeriod">
            <summary>The '.' button on a keyboard in any country/region.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemPipe">
            <summary>The OEM Pipe button on a US standard keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemPlus">
            <summary>The '+' button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemQuestion">
            <summary>The OEM Question Mark button on a US standard keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemQuotes">
            <summary>The OEM Single/Double Quote button on a US standard keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemSemicolon">
            <summary>The OEM Semicolon button on a US standard keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.OemTilde">
            <summary>The OEM Tilde button on a US standard keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.P">
            <summary>The P button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Pa1">
            <summary>The PA1 button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.PageDown">
            <summary>The Page Down button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.PageUp">
            <summary>The Page Up button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Pause">
            <summary>The Pause button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Play">
            <summary>The Play button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Print">
            <summary>The Print button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.PrintScreen">
            <summary>The Print Screen button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.ProcessKey">
            <summary>The IME Process button on a keyboard in Windows 95/98/ME/NT 4.0/2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Q">
            <summary>The Q button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.R">
            <summary>The R button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Right">
            <summary>The Right Arrow button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightAlt">
            <summary>The Right Alt button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightControl">
            <summary>The Right Control button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightShift">
            <summary>The Right Shift button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.RightWindows">
            <summary>The Right Windows button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.S">
            <summary>The S button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Scroll">
            <summary>The Scroll Lock button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Select">
            <summary>The Select button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.SelectMedia">
            <summary>The Select Media button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Separator">
            <summary>The Separator button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Sleep">
            <summary>The Computer Sleep button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Space">
            <summary>The Space bar on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Subtract">
            <summary>The Subtract button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.T">
            <summary>The T button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Tab">
            <summary>The Tab button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.U">
            <summary>The U button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Up">
            <summary>The Up Arrow button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.V">
            <summary>The V button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.VolumeDown">
            <summary>The Volume Down button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.VolumeMute">
            <summary>The Volume Mute button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.VolumeUp">
            <summary>The Volume Up button on a keyboard in Windows 2000/XP.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.W">
            <summary>The W button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.X">
            <summary>The X button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Y">
            <summary>The Y button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Z">
            <summary>The Z button on a keyboard.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButton.Zoom">
            <summary>The Zoom button on a keyboard.</summary>
        </member>
        <member name="T:StardewModdingAPI.SButtonExtensions">
            <summary>Provides extension methods for <see cref="T:StardewModdingAPI.SButton"/>.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButtonExtensions.ControllerOffset">
            <summary>The offset added to <see cref="T:Microsoft.Xna.Framework.Input.Buttons"/> values when converting them to <see cref="T:StardewModdingAPI.SButton"/> to avoid collisions with <see cref="T:Microsoft.Xna.Framework.Input.Keys"/> values.</summary>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.ToSButton(Microsoft.Xna.Framework.Input.Keys)">
            <summary>Get the <see cref="T:StardewModdingAPI.SButton"/> equivalent for the given button.</summary>
            <param name="key">The keyboard button to convert.</param>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.ToSButton(Microsoft.Xna.Framework.Input.Buttons)">
            <summary>Get the <see cref="T:StardewModdingAPI.SButton"/> equivalent for the given button.</summary>
            <param name="key">The controller button to convert.</param>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.ToSButton(StardewValley.InputButton)">
            <summary>Get the <see cref="T:StardewModdingAPI.SButton"/> equivalent for the given button.</summary>
            <param name="input">The Stardew Valley button to convert.</param>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.TryGetKeyboard(StardewModdingAPI.SButton,Microsoft.Xna.Framework.Input.Keys@)">
            <summary>Get the <see cref="T:Microsoft.Xna.Framework.Input.Keys"/> equivalent for the given button.</summary>
            <param name="input">The button to convert.</param>
            <param name="key">The keyboard equivalent.</param>
            <returns>Returns whether the value was converted successfully.</returns>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.TryGetController(StardewModdingAPI.SButton,Microsoft.Xna.Framework.Input.Buttons@)">
            <summary>Get the <see cref="T:Microsoft.Xna.Framework.Input.Buttons"/> equivalent for the given button.</summary>
            <param name="input">The button to convert.</param>
            <param name="button">The controller equivalent.</param>
            <returns>Returns whether the value was converted successfully.</returns>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.TryGetStardewInput(StardewModdingAPI.SButton,StardewValley.InputButton@)">
            <summary>Get the <see cref="T:StardewValley.InputButton"/> equivalent for the given button.</summary>
            <param name="input">The button to convert.</param>
            <param name="button">The Stardew Valley input button equivalent.</param>
            <returns>Returns whether the value was converted successfully.</returns>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.IsUseToolButton(StardewModdingAPI.SButton)">
            <summary>Get whether the given button is equivalent to <see cref="F:StardewValley.Options.useToolButton"/>.</summary>
            <param name="input">The button.</param>
        </member>
        <member name="M:StardewModdingAPI.SButtonExtensions.IsActionButton(StardewModdingAPI.SButton)">
            <summary>Get whether the given button is equivalent to <see cref="F:StardewValley.Options.actionButton"/>.</summary>
            <param name="input">The button.</param>
        </member>
        <member name="T:StardewModdingAPI.SButtonState">
            <summary>The input state for a button during an update frame.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButtonState.None">
            <summary>The button was neither pressed, held, nor released.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButtonState.Pressed">
            <summary>The button was pressed in this frame.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButtonState.Held">
            <summary>The button has been held since the last frame.</summary>
        </member>
        <member name="F:StardewModdingAPI.SButtonState.Released">
            <summary>The button was released in this frame.</summary>
        </member>
        <member name="T:StardewModdingAPI.InputStatusExtensions">
            <summary>Extension methods for <see cref="T:StardewModdingAPI.SButtonState"/>.</summary>
        </member>
        <member name="M:StardewModdingAPI.InputStatusExtensions.IsDown(StardewModdingAPI.SButtonState)">
            <summary>Whether the button was pressed or held.</summary>
            <param name="state">The button state.</param>
        </member>
        <member name="T:StardewModdingAPI.SemanticVersion">
            <summary>A semantic version with an optional release tag.</summary>
        </member>
        <member name="F:StardewModdingAPI.SemanticVersion.Version">
            <summary>The underlying semantic version implementation.</summary>
        </member>
        <member name="P:StardewModdingAPI.SemanticVersion.MajorVersion">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.SemanticVersion.MinorVersion">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.SemanticVersion.PatchVersion">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.SemanticVersion.PrereleaseTag">
            <inheritdoc />
        </member>
        <member name="P:StardewModdingAPI.SemanticVersion.BuildMetadata">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.#ctor(System.Int32,System.Int32,System.Int32,System.String,System.String)">
            <summary>Construct an instance.</summary>
            <param name="majorVersion">The major version incremented for major API changes.</param>
            <param name="minorVersion">The minor version incremented for backwards-compatible changes.</param>
            <param name="patchVersion">The patch version for backwards-compatible bug fixes.</param>
            <param name="prereleaseTag">An optional prerelease tag.</param>
            <param name="buildMetadata">Optional build metadata. This is ignored when determining version precedence.</param>
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.String,System.String)">
            <summary>Construct an instance.</summary>
            <param name="majorVersion">The major version incremented for major API changes.</param>
            <param name="minorVersion">The minor version incremented for backwards-compatible changes.</param>
            <param name="patchVersion">The patch version for backwards-compatible bug fixes.</param>
            <param name="prereleaseTag">An optional prerelease tag.</param>
            <param name="platformRelease">The platform-specific version (if applicable).</param>
            <param name="buildMetadata">Optional build metadata. This is ignored when determining version precedence.</param>
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.#ctor(System.String)">
            <summary>Construct an instance.</summary>
            <param name="version">The semantic version string.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="version"/> is null.</exception>
            <exception cref="T:System.FormatException">The <paramref name="version"/> is not a valid semantic version.</exception>
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.#ctor(System.String,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="version">The semantic version string.</param>
            <param name="allowNonStandard">Whether to recognize non-standard semver extensions.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="version"/> is null.</exception>
            <exception cref="T:System.FormatException">The <paramref name="version"/> is not a valid semantic version.</exception>
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.#ctor(System.Version)">
            <summary>Construct an instance.</summary>
            <param name="version">The assembly version.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="version"/> is null.</exception>
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.#ctor(StardewModdingAPI.ISemanticVersion)">
            <summary>Construct an instance.</summary>
            <param name="version">The underlying semantic version implementation.</param>
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsPrerelease">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.CompareTo(StardewModdingAPI.ISemanticVersion)">
            <inheritdoc />
            <remarks>The implementation is defined by Semantic Version 2.0 (https://semver.org/).</remarks>
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsOlderThan(StardewModdingAPI.ISemanticVersion)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsOlderThan(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsNewerThan(StardewModdingAPI.ISemanticVersion)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsNewerThan(System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsBetween(StardewModdingAPI.ISemanticVersion,StardewModdingAPI.ISemanticVersion)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsBetween(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.Equals(StardewModdingAPI.ISemanticVersion)">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.ToString">
            <inheritdoc cref="M:StardewModdingAPI.ISemanticVersion.ToString" />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.IsNonStandard">
            <inheritdoc />
        </member>
        <member name="M:StardewModdingAPI.SemanticVersion.TryParse(System.String,StardewModdingAPI.ISemanticVersion@)">
            <summary>Parse a version string without throwing an exception if it fails.</summary>
            <param name="version">The version string.</param>
            <param name="parsed">The parsed representation.</param>
            <returns>Returns whether parsing the version succeeded.</returns>
        </member>
        <member name="T:StardewModdingAPI.Translation">
            <summary>A translation string with a fluent API to customise it.</summary>
        </member>
        <member name="F:StardewModdingAPI.Translation.PlaceholderText">
            <summary>The placeholder text when the translation is <c>null</c> or empty, where <c>{0}</c> is the translation key.</summary>
        </member>
        <member name="F:StardewModdingAPI.Translation.Locale">
            <summary>The locale for which the translation was fetched like <c>fr-FR</c>, or an empty string for English.</summary>
        </member>
        <member name="F:StardewModdingAPI.Translation.Text">
            <summary>The underlying translation text.</summary>
        </member>
        <member name="F:StardewModdingAPI.Translation.Placeholder">
            <summary>The value to return if the translations is undefined.</summary>
        </member>
        <member name="P:StardewModdingAPI.Translation.Key">
            <summary>The original translation key.</summary>
        </member>
        <member name="M:StardewModdingAPI.Translation.#ctor(System.String,System.String,System.String)">
            <summary>Construct an instance.</summary>
            <param name="locale">The locale for which the translation was fetched.</param>
            <param name="key">The translation key.</param>
            <param name="text">The underlying translation text.</param>
        </member>
        <member name="M:StardewModdingAPI.Translation.Default(System.String)">
            <summary>Replace the text if it's <c>null</c> or empty. If you set a <c>null</c> or empty value, the translation will show the fallback "no translation" placeholder (see <see cref="M:StardewModdingAPI.Translation.UsePlaceholder(System.Boolean)"/> if you want to disable that). Returns a new instance if changed.</summary>
            <param name="default">The default value.</param>
        </member>
        <member name="M:StardewModdingAPI.Translation.UsePlaceholder(System.Boolean)">
            <summary>Whether to return a "no translation" placeholder if the translation is <c>null</c> or empty. Returns a new instance.</summary>
            <param name="use">Whether to return a placeholder. <strong>Due to limitations with nullable reference types, setting this to <c>false</c> will still mark the text non-nullable.</strong></param>
        </member>
        <member name="M:StardewModdingAPI.Translation.Tokens(System.Object)">
            <summary>Replace tokens in the text like <c>{{value}}</c> with the given values. Returns a new instance.</summary>
            <param name="tokens">An object containing token key/value pairs. This can be an anonymous object (like <c>new { value = 42, name = "Cranberries" }</c>), a dictionary, or a class instance.</param>
            <exception cref="T:System.ArgumentNullException">The <paramref name="tokens"/> argument is <c>null</c>.</exception>
        </member>
        <member name="M:StardewModdingAPI.Translation.HasValue">
            <summary>Get whether the translation has a defined value.</summary>
        </member>
        <member name="M:StardewModdingAPI.Translation.ToString">
            <summary>Get the translation text. Calling this method isn't strictly necessary, since you can assign a <see cref="T:StardewModdingAPI.Translation"/> value directly to a string.</summary>
            <remarks><strong>Limitation with nullable reference types: if there's no text and you disabled the fallback via <see cref="M:StardewModdingAPI.Translation.UsePlaceholder(System.Boolean)"/>, this will return null but the return value will still be marked non-nullable.</strong></remarks>
        </member>
        <member name="M:StardewModdingAPI.Translation.op_Implicit(StardewModdingAPI.Translation)~System.String">
            <summary>Get a string representation of the given translation.</summary>
            <param name="translation">The translation key.</param>
            <remarks><strong>Limitation with nullable reference types: if there's no text and you disabled the fallback via <see cref="M:StardewModdingAPI.Translation.UsePlaceholder(System.Boolean)"/>, this will return null but the return value will still be marked non-nullable.</strong></remarks>
        </member>
        <member name="M:StardewModdingAPI.Translation.#ctor(System.String,System.String,System.String,System.String)">
            <summary>Construct an instance.</summary>
            <param name="locale">The locale for which the translation was fetched.</param>
            <param name="key">The translation key.</param>
            <param name="text">The underlying translation text.</param>
            <param name="placeholder">The value to return if the translations is undefined.</param>
        </member>
        <member name="T:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator">
            <summary>Handles enumerating the normalized segments in an asset name.</summary>
        </member>
        <member name="F:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.RemainderImpl">
            <summary>The backing field for <see cref="P:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.Remainder"/>.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.Remainder">
            <summary>The remainder of the asset name being enumerated, ignoring segments which have already been yielded.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.Current">
            <summary>Get the current segment.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.#ctor(System.ReadOnlySpan{System.Char})">
            <summary>Construct an instance.</summary>
            <param name="assetName">The asset name to enumerate.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.MoveNext">
            <summary>Move the enumerator to the next segment.</summary>
            <returns>Returns true if a new value was found (accessible via <see cref="P:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.Current"/>).</returns>
        </member>
        <member name="M:StardewModdingAPI.Utilities.AssetPathUtilities.AssetNamePartEnumerator.TrimLeadingPathSeparators(System.ReadOnlySpan{System.Char})">
            <summary>Trim path separators at the start of the given path or segment.</summary>
            <param name="span">The path or segment to trim.</param>
        </member>
        <member name="T:StardewModdingAPI.Utilities.DelegatingModHooks">
            <summary>An implementation of <see cref="T:StardewValley.Mods.ModHooks"/> which automatically calls the parent instance for any method that's not overridden.</summary>
            <remarks>The mod hooks are primarily meant for SMAPI to use. Using this directly in mods is a last resort, since it's very easy to break SMAPI this way. This class requires that SMAPI is present in the parent chain.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Utilities.DelegatingModHooks.Parent">
            <summary>The underlying instance to delegate to by default.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.#ctor(StardewValley.Mods.ModHooks)">
            <summary>Construct an instance.</summary>
            <param name="modHooks">The underlying instance to delegate to by default.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnGame1_PerformTenMinuteClockUpdate(System.Action)">
            <summary>Raised before the in-game clock changes.</summary>
            <param name="action">Run the vanilla update logic.</param>
            <remarks>In mods, consider using <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.TimeChanged"/> instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnGame1_NewDayAfterFade(System.Action)">
            <summary>Raised before initializing the new day and saving.</summary>
            <param name="action">Run the vanilla update logic.</param>
            <remarks>In mods, consider using <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.DayEnding"/> or <see cref="E:StardewModdingAPI.Events.IGameLoopEvents.Saving"/> instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnGame1_ShowEndOfNightStuff(System.Action)">
            <summary>Raised before showing the end-of-day menus (e.g. shipping menus, level-up screen, etc).</summary>
            <param name="action">Run the vanilla update logic.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnGame1_UpdateControlInput(Microsoft.Xna.Framework.Input.KeyboardState@,Microsoft.Xna.Framework.Input.MouseState@,Microsoft.Xna.Framework.Input.GamePadState@,System.Action)">
            <summary>Raised before updating the gamepad, mouse, and keyboard input state.</summary>
            <param name="keyboardState">The keyboard state.</param>
            <param name="mouseState">The mouse state.</param>
            <param name="gamePadState">The gamepad state.</param>
            <param name="action">Run the vanilla update logic.</param>
            <remarks>In mods, consider using <see cref="T:StardewModdingAPI.Events.IInputEvents"/> instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnGameLocation_ResetForPlayerEntry(StardewValley.GameLocation,System.Action)">
            <summary>Raised before a location is updated for the local player entering it.</summary>
            <param name="location">The location that will be updated.</param>
            <param name="action">Run the vanilla update logic.</param>
            <remarks>In mods, consider using <see cref="E:StardewModdingAPI.Events.IPlayerEvents.Warped"/> instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnGameLocation_CheckAction(StardewValley.GameLocation,xTile.Dimensions.Location,xTile.Dimensions.Rectangle,StardewValley.Farmer,System.Func{System.Boolean})">
            <summary>Raised before the game checks for an action to trigger for a player interaction with a tile.</summary>
            <param name="location">The location being checked.</param>
            <param name="tileLocation">The tile position being checked.</param>
            <param name="viewport">The game's current position and size within the map, measured in pixels.</param>
            <param name="who">The player interacting with the tile.</param>
            <param name="action">Run the vanilla update logic.</param>
            <returns>Returns whether the interaction was handled.</returns>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnUtility_PickFarmEvent(System.Func{StardewValley.Events.FarmEvent})">
            <summary>Raised before the game picks a night event to show on the farm after the player sleeps.</summary>
            <param name="action">Run the vanilla update logic.</param>
            <returns>Returns the selected farm event.</returns>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.AfterNewDayBarrier(System.String)">
            <summary>Raised after the player crosses a mutex barrier in the new-day initialization before saving.</summary>
            <param name="barrier_id">The barrier ID set in the new-day code.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.CreatedInitialLocations">
            <summary>Raised when creating a new save slot, after the game has added the location instances but before it fully initializes them.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.SaveAddedLocations">
            <summary>Raised when loading a save slot, after the game has added the location instances but before it restores their save data. Not applicable when connecting to a multiplayer host.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnRendering(StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.GameTime,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <summary>Raised before the game renders content to the screen in the draw loop.</summary>
            <param name="step">The render step being started.</param>
            <param name="sb">The sprite batch being drawn (which might not always be open yet).</param>
            <param name="time">A snapshot of the game timing state.</param>
            <param name="target_screen">The render target, if any.</param>
            <returns>Returns whether to continue with the render step.</returns>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.OnRendered(StardewValley.Mods.RenderSteps,Microsoft.Xna.Framework.Graphics.SpriteBatch,Microsoft.Xna.Framework.GameTime,Microsoft.Xna.Framework.Graphics.RenderTarget2D)">
            <summary>Raised after the game renders content to the screen in the draw loop.</summary>
            <param name="step">The render step being started.</param>
            <param name="sb">The sprite batch being drawn (which might not always be open yet).</param>
            <param name="time">A snapshot of the game timing state.</param>
            <param name="target_screen">The render target, if any.</param>
            <returns>Returns whether to continue with the render step.</returns>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.TryDrawMenu(StardewValley.Menus.IClickableMenu,System.Action)">
            <summary>Draw a menu (or child menu) if possible.</summary>
            <param name="menu">The menu to draw.</param>
            <param name="draw_menu_action">The action which draws the menu.</param>
            <returns>Returns whether the menu was successfully drawn.</returns>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.StartTask(System.Threading.Tasks.Task,System.String)">
            <summary>Start an asynchronous task for the game.</summary>
            <param name="task">The task to start.</param>
            <param name="id">A unique key which identifies the task.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.StartTask``1(System.Threading.Tasks.Task{``0},System.String)">
            <summary>Start an asynchronous task for the game.</summary>
            <typeparam name="T">The type returned by the task when it completes.</typeparam>
            <param name="task">The task to start.</param>
            <param name="id">A unique key which identifies the task.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.DelegatingModHooks.AssertSmapiInChain(StardewValley.Mods.ModHooks)">
            <summary>Assert that SMAPI's mod hook implementation is in the inheritance chain.</summary>
            <param name="hooks">The mod hooks to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Utilities.Keybind">
            <summary>A single multi-key binding which can be triggered by the player.</summary>
            <remarks>NOTE: this is part of <see cref="T:StardewModdingAPI.Utilities.KeybindList"/>, and usually shouldn't be used directly.</remarks>
        </member>
        <member name="P:StardewModdingAPI.Utilities.Keybind.GetButtonState">
            <summary>Get the current input state for a button.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.Keybind.Buttons">
            <summary>The buttons that must be down to activate the keybind.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.Keybind.IsBound">
            <summary>Whether any keys are bound.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.Keybind.#ctor(StardewModdingAPI.SButton[])">
            <summary>Construct an instance.</summary>
            <param name="buttons">The buttons that must be down to activate the keybind.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.Keybind.TryParse(System.String,StardewModdingAPI.Utilities.Keybind@,System.String[]@)">
            <summary>Parse a keybind string, if it's valid.</summary>
            <param name="input">The keybind string. See remarks on <see cref="M:StardewModdingAPI.Utilities.Keybind.ToString"/> for format details.</param>
            <param name="parsed">The parsed keybind, if valid.</param>
            <param name="errors">The parse errors, if any.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.Keybind.GetState">
            <summary>Get the keybind state relative to the previous tick.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.Keybind.ToString">
            <summary>Get a string representation of the keybind.</summary>
            <remarks>A keybind is serialized to a string like <c>LeftControl + S</c>, where each key is separated with <c>+</c>. The key order is commutative, so <c>LeftControl + S</c> and <c>S + LeftControl</c> are identical.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Utilities.KeybindList">
            <summary>A set of multi-key bindings which can be triggered by the player.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.KeybindList.Keybinds">
            <summary>The individual keybinds.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.KeybindList.IsBound">
            <summary>Whether any keys are bound.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.#ctor(StardewModdingAPI.Utilities.Keybind[])">
            <summary>Construct an instance.</summary>
            <param name="keybinds">The underlying keybinds.</param>
            <remarks>See <see cref="M:StardewModdingAPI.Utilities.KeybindList.Parse(System.String)"/> or <see cref="M:StardewModdingAPI.Utilities.KeybindList.TryParse(System.String,StardewModdingAPI.Utilities.KeybindList@,System.String[]@)"/> to parse it from a string representation. You can also use this type directly in your config or JSON data models, and it'll be parsed by SMAPI.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.#ctor(StardewModdingAPI.SButton)">
            <summary>Construct an instance.</summary>
            <param name="singleKey">A single-key binding.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.Parse(System.String)">
            <summary>Parse a keybind list from a string, and throw an exception if it's not valid.</summary>
            <param name="input">The keybind string. See remarks on <see cref="M:StardewModdingAPI.Utilities.KeybindList.ToString"/> for format details.</param>
            <exception cref="T:System.FormatException">The <paramref name="input"/> format is invalid.</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.TryParse(System.String,StardewModdingAPI.Utilities.KeybindList@,System.String[]@)">
            <summary>Try to parse a keybind list from a string.</summary>
            <param name="input">The keybind string. See remarks on <see cref="M:StardewModdingAPI.Utilities.KeybindList.ToString"/> for format details.</param>
            <param name="parsed">The parsed keybind list, if valid.</param>
            <param name="errors">The errors that occurred while parsing the input, if any.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.ForSingle(StardewModdingAPI.SButton[])">
            <summary>Get a keybind list for a single keybind.</summary>
            <param name="buttons">The buttons that must be down to activate the keybind.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.GetState">
            <summary>Get the overall keybind list state relative to the previous tick.</summary>
            <remarks>States are transitive across keybind. For example, if one keybind is 'released' and another is 'pressed', the state of the keybind list is 'held'.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.IsDown">
            <summary>Get whether any of the button sets are pressed.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.JustPressed">
            <summary>Get whether the input binding was just pressed this tick.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.GetKeybindCurrentlyDown">
            <summary>Get the keybind which is currently down, if any. If there are multiple keybinds down, the first one is returned.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.KeybindList.ToString">
            <summary>Get a string representation of the input binding.</summary>
            <remarks>A keybind list is serialized to a string like <c>LeftControl + S, LeftAlt + S</c>, where each multi-key binding is separated with <c>,</c> and the keys within each keybind are separated with <c>+</c>. The key order is commutative, so <c>LeftControl + S</c> and <c>S + LeftControl</c> are identical.</remarks>
        </member>
        <member name="T:StardewModdingAPI.Utilities.PathUtilities">
            <summary>Provides utilities for normalizing file paths.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.PathUtilities.PreferredAssetSeparator">
            <summary>The preferred directory separator character in an asset key.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PathUtilities.GetSegments(System.String,System.Nullable{System.Int32})">
            <summary>Get the segments from a path (e.g. <c>/usr/bin/example</c> => <c>usr</c>, <c>bin</c>, and <c>example</c>).</summary>
            <param name="path">The path to split.</param>
            <param name="limit">The number of segments to match. Any additional segments will be merged into the last returned part.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PathUtilities.NormalizeAssetName(System.String)">
            <summary>Normalize an asset name to match how MonoGame's content APIs would normalize and cache it.</summary>
            <param name="assetName">The asset name to normalize.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PathUtilities.NormalizePath(System.String)">
            <summary>Normalize separators in a file path for the current platform.</summary>
            <param name="path">The file path to normalize.</param>
            <remarks>This should only be used for file paths. For asset names, use <see cref="M:StardewModdingAPI.Utilities.PathUtilities.NormalizeAssetName(System.String)"/> instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PathUtilities.IsSafeRelativePath(System.String)">
            <summary>Get whether a path is relative and doesn't try to climb out of its containing folder (e.g. doesn't contain <c>../</c>).</summary>
            <param name="path">The path to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PathUtilities.IsSlug(System.String)">
            <summary>Get whether a string is a valid 'slug', containing only basic characters that are safe in all contexts (e.g. filenames, URLs, etc).</summary>
            <param name="str">The string to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Utilities.PerScreen`1">
            <summary>Manages a separate value for each player in split-screen mode. This can safely be used in non-split-screen mode too, it'll just have a single state in that case.</summary>
            <typeparam name="T">The state class.</typeparam>
        </member>
        <member name="F:StardewModdingAPI.Utilities.PerScreen`1.CreateNewState">
            <summary>Create the initial value for a screen.</summary>
        </member>
        <member name="F:StardewModdingAPI.Utilities.PerScreen`1.States">
            <summary>The tracked values for each screen.</summary>
        </member>
        <member name="F:StardewModdingAPI.Utilities.PerScreen`1.LastRemovedScreenId">
            <summary>The last <see cref="F:StardewModdingAPI.Context.LastRemovedScreenId"/> value for which this instance was updated.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.PerScreen`1.Value">
            <summary>The value for the current screen.</summary>
            <remarks>The value is initialized the first time it's requested for that screen, unless it's set manually first.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.#ctor">
            <summary>Construct an instance.</summary>
            <remarks><strong>Limitation with nullable reference types:</strong> when the underlying type <typeparamref name="T"/> is nullable, this sets the default value to null regardless of whether you marked the type parameter nullable. To avoid that, set the default value with the 'createNewState' argument instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.#ctor(System.Func{`0})">
            <summary>Construct an instance.</summary>
            <param name="createNewState">Create the initial state for a screen.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.GetActiveValues">
            <summary>Get all active values by screen ID. This doesn't initialize the value for a screen ID if it's not created yet.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.GetValueForScreen(System.Int32)">
            <summary>Get the value for a given screen ID, creating it if needed.</summary>
            <param name="screenId">The screen ID to check.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.SetValueForScreen(System.Int32,`0)">
            <summary>Set the value for a given screen ID.</summary>
            <param name="screenId">The screen ID whose value set.</param>
            <param name="value">The value to set.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.ResetAllScreens">
            <summary>Remove all active values.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.IsActiveForScreen">
            <summary>Get whether the current screen has a value created yet.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.RemoveDeadScreens">
            <summary>Remove screens which are no longer active.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.PerScreen`1.RemoveScreens(System.Func{System.Int32,System.Boolean})">
            <summary>Remove screens matching a condition.</summary>
            <param name="shouldRemove">Returns whether a screen ID should be removed.</param>
        </member>
        <member name="T:StardewModdingAPI.Utilities.SDate">
            <summary>Represents a Stardew Valley date.</summary>
        </member>
        <member name="F:StardewModdingAPI.Utilities.SDate.Seasons">
            <summary>The internal season names in order.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.SeasonsInYear">
            <summary>The number of seasons in a year.</summary>
        </member>
        <member name="F:StardewModdingAPI.Utilities.SDate.DaysInSeason">
            <summary>The number of days in a season.</summary>
        </member>
        <member name="F:StardewModdingAPI.Utilities.SDate.Translations">
            <summary>The core SMAPI translations.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.Day">
            <summary>The day of month.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.Season">
            <summary>The season.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.SeasonKey">
            <summary>The season name.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.SeasonIndex">
            <summary>The index of the season (where 0 is spring, 1 is summer, 2 is fall, and 3 is winter).</summary>
            <remarks>This is used in some game calculations (e.g. seasonal game sprites) and methods (e.g. <see cref="M:StardewValley.Utility.getSeasonNameFromNumber(System.Int32)"/>).</remarks>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.Year">
            <summary>The year.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.DayOfWeek">
            <summary>The day of week.</summary>
        </member>
        <member name="P:StardewModdingAPI.Utilities.SDate.DaysSinceStart">
            <summary>The number of days since the game began (starting at 1 for the first day of spring in Y1).</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.#ctor(System.Int32,System.String)">
            <summary>Construct an instance.</summary>
            <param name="day">The day of month.</param>
            <param name="season">The season name.</param>
            <exception cref="T:System.ArgumentException">One of the arguments has an invalid value (like day 35).</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.#ctor(System.Int32,StardewValley.Season)">
            <summary>Construct an instance.</summary>
            <param name="day">The day of month.</param>
            <param name="season">The season name.</param>
            <exception cref="T:System.ArgumentException">One of the arguments has an invalid value (like day 35).</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.#ctor(System.Int32,System.String,System.Int32)">
            <summary>Construct an instance.</summary>
            <param name="day">The day of month.</param>
            <param name="season">The season name.</param>
            <param name="year">The year.</param>
            <exception cref="T:System.ArgumentException">One of the arguments has an invalid value (like day 35).</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.#ctor(System.Int32,StardewValley.Season,System.Int32)">
            <summary>Construct an instance.</summary>
            <param name="day">The day of month.</param>
            <param name="season">The season name.</param>
            <param name="year">The year.</param>
            <exception cref="T:System.ArgumentException">One of the arguments has an invalid value (like day 35).</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.Now">
            <summary>Get the current in-game date.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.FromDaysSinceStart(System.Int32)">
            <summary>Get a date from the number of days after 0 spring Y1.</summary>
            <param name="daysSinceStart">The number of days since 0 spring Y1.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.From(StardewValley.WorldDate)">
            <summary>Get a date from a game date instance.</summary>
            <param name="date">The world date.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.AddDays(System.Int32)">
            <summary>Get a new date with the given number of days added.</summary>
            <param name="offset">The number of days to add.</param>
            <returns>Returns the resulting date.</returns>
            <exception cref="T:System.ArithmeticException">The offset would result in an invalid date (like year 0).</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.ToWorldDate">
            <summary>Get a game date representation of the date.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.ToString">
            <summary>Get an untranslated string representation of the date. This is mainly intended for debugging or console messages.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.ToLocaleString(System.Boolean)">
            <summary>Get a translated string representation of the date in the current game locale.</summary>
            <param name="withYear">Whether to get a string which includes the year number.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.Equals(StardewModdingAPI.Utilities.SDate)">
            <summary>Get whether this instance is equal to another.</summary>
            <param name="other">The other value to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.Equals(System.Object)">
            <summary>Get whether this instance is equal to another.</summary>
            <param name="obj">The other value to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.GetHashCode">
            <summary>Get a hash code which uniquely identifies a date.</summary>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.op_Equality(StardewModdingAPI.Utilities.SDate,StardewModdingAPI.Utilities.SDate)">
            <summary>Get whether one date is equal to another.</summary>
            <param name="date">The base date to compare.</param>
            <param name="other">The other date to compare.</param>
            <returns>The equality of the dates</returns>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.op_Inequality(StardewModdingAPI.Utilities.SDate,StardewModdingAPI.Utilities.SDate)">
            <summary>Get whether one date is not equal to another.</summary>
            <param name="date">The base date to compare.</param>
            <param name="other">The other date to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.op_GreaterThan(StardewModdingAPI.Utilities.SDate,StardewModdingAPI.Utilities.SDate)">
            <summary>Get whether one date is more than another.</summary>
            <param name="date">The base date to compare.</param>
            <param name="other">The other date to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.op_GreaterThanOrEqual(StardewModdingAPI.Utilities.SDate,StardewModdingAPI.Utilities.SDate)">
            <summary>Get whether one date is more than or equal to another.</summary>
            <param name="date">The base date to compare.</param>
            <param name="other">The other date to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.op_LessThanOrEqual(StardewModdingAPI.Utilities.SDate,StardewModdingAPI.Utilities.SDate)">
            <summary>Get whether one date is less than or equal to another.</summary>
            <param name="date">The base date to compare.</param>
            <param name="other">The other date to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.op_LessThan(StardewModdingAPI.Utilities.SDate,StardewModdingAPI.Utilities.SDate)">
            <summary>Get whether one date is less than another.</summary>
            <param name="date">The base date to compare.</param>
            <param name="other">The other date to compare.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.#ctor(System.Int32,StardewValley.Season,System.Int32,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="day">The day of month.</param>
            <param name="season">The season.</param>
            <param name="year">The year.</param>
            <param name="allowDayZero">Whether to allow 0 spring Y1 as a valid date.</param>
            <exception cref="T:System.ArgumentException">One of the arguments has an invalid value (like day 35).</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.#ctor(System.Int32,System.String,System.Int32,System.Boolean)">
            <summary>Construct an instance.</summary>
            <param name="day">The day of month.</param>
            <param name="season">The season name.</param>
            <param name="year">The year.</param>
            <param name="allowDayZero">Whether to allow 0 spring Y1 as a valid date.</param>
            <exception cref="T:System.ArgumentException">One of the arguments has an invalid value (like day 35).</exception>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.IsDayZero(System.Int32,StardewValley.Season,System.Int32)">
            <summary>Get whether a date represents 0 spring Y1, which is the date during the in-game intro.</summary>
            <param name="day">The day of month.</param>
            <param name="season">The normalized season name.</param>
            <param name="year">The year.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.GetDayOfWeek(System.Int32)">
            <summary>Get the day of week for a given date.</summary>
            <param name="day">The day of month.</param>
        </member>
        <member name="M:StardewModdingAPI.Utilities.SDate.GetDaysSinceStart(System.Int32,StardewValley.Season,System.Int32)">
            <summary>Get the number of days since the game began (starting at 1 for the first day of spring in Y1).</summary>
            <param name="day">The day of month.</param>
            <param name="season">The season name.</param>
            <param name="year">The year.</param>
        </member>
        <member name="T:StardewModdingAPI.Toolkit.Framework.LowLevelEnvironmentUtility">
            <summary>Provides low-level methods for fetching environment information.</summary>
            <remarks>This is used by the SMAPI core before the toolkit DLL is available; most code should use <see cref="T:StardewModdingAPI.Toolkit.Utilities.EnvironmentUtility"/> instead.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Toolkit.Framework.LowLevelEnvironmentUtility.uname(System.IntPtr)">
            <summary>Get the OS name from the system uname command.</summary>
            <param name="buffer">The buffer to fill with the resulting string.</param>
        </member>
        <member name="M:StardewModdingAPI.Toolkit.Framework.LowLevelEnvironmentUtility.DetectPlatform">
            <summary>Detect the current OS.</summary>
        </member>
        <member name="M:StardewModdingAPI.Toolkit.Framework.LowLevelEnvironmentUtility.GetFriendlyPlatformName(System.String)">
            <summary>Get the human-readable OS name and version.</summary>
            <param name="platform">The current platform.</param>
        </member>
        <member name="M:StardewModdingAPI.Toolkit.Framework.LowLevelEnvironmentUtility.Is64BitAssembly(System.String)">
            <summary>Get whether an executable is 64-bit.</summary>
            <param name="path">The absolute path to the assembly file.</param>
        </member>
        <member name="M:StardewModdingAPI.Toolkit.Framework.LowLevelEnvironmentUtility.IsRunningAndroid">
            <summary>Detect whether the code is running on Android.</summary>
            <remarks>
            This code is derived from https://stackoverflow.com/a/47521647/262123. It detects Android by calling the
            <c>getprop</c> system command to check for an Android-specific property.
            </remarks>
        </member>
        <member name="M:StardewModdingAPI.Toolkit.Framework.LowLevelEnvironmentUtility.IsRunningMac">
            <summary>Detect whether the code is running on macOS.</summary>
            <remarks>
            This code is derived from the Mono project (see System.Windows.Forms/System.Windows.Forms/XplatUI.cs). It detects macOS by calling the
            <c>uname</c> system command and checking the response, which is always 'Darwin' for macOS.
            </remarks>
        </member>
        <member name="T:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter">
            <summary>Writes color-coded text to the console.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.Colors">
            <summary>The console text color for each log level.</summary>
        </member>
        <member name="P:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.SupportsColor">
            <summary>Whether the current console supports color formatting.</summary>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.#ctor(StardewModdingAPI.Toolkit.Utilities.Platform)">
            <summary>Construct an instance.</summary>
            <param name="platform">The target platform.</param>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.#ctor(StardewModdingAPI.Toolkit.Utilities.Platform,StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig)">
            <summary>Construct an instance.</summary>
            <param name="platform">The target platform.</param>
            <param name="colorConfig">The colors to use for text written to the SMAPI console.</param>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.WriteLine(System.String,StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel)">
            <summary>Write a message line to the log.</summary>
            <param name="message">The message to log.</param>
            <param name="level">The log level.</param>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.GetDefaultColorSchemeConfig(StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme)">
            <summary>Get the default color scheme config for cases where it's not configurable (e.g. the installer).</summary>
            <param name="useScheme">The default color scheme ID to use, or <see cref="F:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme.AutoDetect"/> to select one automatically.</param>
            <remarks>The colors here should be kept in sync with the SMAPI config file.</remarks>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.TestColorSupport">
            <summary>Test whether the current console supports color formatting.</summary>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.GetConsoleColorScheme(StardewModdingAPI.Toolkit.Utilities.Platform,StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig)">
            <summary>Get the color scheme to use for the current console.</summary>
            <param name="platform">The target platform.</param>
            <param name="colorConfig">The colors to use for text written to the SMAPI console.</param>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorfulConsoleWriter.IsDark(System.ConsoleColor)">
            <summary>Get whether a console color should be considered dark, which is subjectively defined as 'white looks better than black on this text'.</summary>
            <param name="color">The color to check.</param>
        </member>
        <member name="T:StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig">
            <summary>The console color scheme options.</summary>
        </member>
        <member name="P:StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig.UseScheme">
            <summary>The default color scheme ID to use, or <see cref="F:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme.AutoDetect"/> to select one automatically.</summary>
        </member>
        <member name="P:StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig.Schemes">
            <summary>The available console color schemes.</summary>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.ColorSchemeConfig.#ctor(StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme,System.Collections.Generic.IDictionary{StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme,System.Collections.Generic.IDictionary{StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel,System.ConsoleColor}})">
            <summary>Construct an instance.</summary>
            <param name="useScheme">The default color scheme ID to use, or <see cref="F:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme.AutoDetect"/> to select one automatically.</param>
            <param name="schemes">The available console color schemes.</param>
        </member>
        <member name="T:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel">
            <summary>The log severity levels.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Trace">
            <summary>Tracing info intended for developers.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Debug">
            <summary>Troubleshooting info that may be relevant to the player.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Info">
            <summary>Info relevant to the player. This should be used judiciously.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Warn">
            <summary>An issue the player should be aware of. This should be used rarely.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Error">
            <summary>A message indicating something went wrong.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Alert">
            <summary>Important information to highlight for the player when player action is needed (e.g. new version available). This should be used rarely to avoid alert fatigue.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Critical">
            <summary>A critical issue that generally signals an immediate end to the application.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel.Success">
            <summary>A success message that generally signals a successful end to a task.</summary>
        </member>
        <member name="T:StardewModdingAPI.Internal.ConsoleWriting.IConsoleWriter">
            <summary>Writes text to the console.</summary>
        </member>
        <member name="M:StardewModdingAPI.Internal.ConsoleWriting.IConsoleWriter.WriteLine(System.String,StardewModdingAPI.Internal.ConsoleWriting.ConsoleLogLevel)">
            <summary>Write a message line to the log.</summary>
            <param name="message">The message to log.</param>
            <param name="level">The log level.</param>
        </member>
        <member name="T:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme">
            <summary>A monitor color scheme to use.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme.AutoDetect">
            <summary>Choose a color scheme automatically.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme.DarkBackground">
            <summary>Use lighter text colors that look better on a black or dark background.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme.LightBackground">
            <summary>Use darker text colors that look better on a white or light background.</summary>
        </member>
        <member name="F:StardewModdingAPI.Internal.ConsoleWriting.MonitorColorScheme.None">
            <summary>Disable console color.</summary>
        </member>
        <member name="T:StardewModdingAPI.Internal.ExceptionHelper">
            <summary>Provides extension methods for handling exceptions.</summary>
        </member>
        <member name="M:StardewModdingAPI.Internal.ExceptionHelper.GetLogSummary(System.Exception)">
            <summary>Get a string representation of an exception suitable for writing to the error log.</summary>
            <param name="exception">The error to summarize.</param>
        </member>
        <member name="M:StardewModdingAPI.Internal.ExceptionHelper.SimplifyExtensionMessage(System.String)">
            <summary>Simplify common patterns in exception log messages that don't convey useful info.</summary>
            <param name="message">The log message to simplify.</param>
        </member>
    </members>
</doc>
