Jump to content

Modding:Migrate to Stardew Valley 1.6.16: Difference between revisions

From Stardew Valley Wiki
imported>Spacechase0
m →Display shops: Single character typo fix (they -> the)
imported>Pathoschild
→Changes for all mod authors: + tokenizable string changes for [SuggestedItem] arguments
Line 695: Line 695:
| <samp>MultiplayerGlobalMessage {{t|translationKey}} {{o|arg1}} {{o|arg2}} {{o|arg3}}...</samp>
| <samp>MultiplayerGlobalMessage {{t|translationKey}} {{o|arg1}} {{o|arg2}} {{o|arg3}}...</samp>
| Show a global chat message in multiplayer. The translation key needs to exist in <samp>Strings/UI</samp> and must be prefixed with <samp>Chat_</samp> within that file (meaning you would use <samp>"SomeMessage"</samp> in <samp>MultiplayerGlobalMessage</samp> and <samp>"Chat_SomeMessage"</samp> in <samp>Strings/UI</samp>). Any additional arguments after the translation key (which are parsed as tokenizable strings) will be used as substitution values using the normal notation. (ex. <samp>MultiplayerGlobalMessage "SomeMessage" "meow" "kitty cat"</samp> and <samp>"Chat_SomeMessage": "{1} goes {0}"</samp> would result in the message <samp>"kitty cat goes meow"</samp>)
| Show a global chat message in multiplayer. The translation key needs to exist in <samp>Strings/UI</samp> and must be prefixed with <samp>Chat_</samp> within that file (meaning you would use <samp>"SomeMessage"</samp> in <samp>MultiplayerGlobalMessage</samp> and <samp>"Chat_SomeMessage"</samp> in <samp>Strings/UI</samp>). Any additional arguments after the translation key (which are parsed as tokenizable strings) will be used as substitution values using the normal notation. (ex. <samp>MultiplayerGlobalMessage "SomeMessage" "meow" "kitty cat"</samp> and <samp>"Chat_SomeMessage": "{1} goes {0}"</samp> would result in the message <samp>"kitty cat goes meow"</samp>)
|}</li>
</ul>
===[[Modding:Tokenizable strings|Tokenizable string]] changes===
<ul>
<li>Improved an existing token:
{| class="wikitable"
|-
! token format
! output
|-
| <samp>[SuggestedItem {{o|interval}} {{o|sync key}} {{o|options}}]</samp>
| '''(For [[Modding:Shops|shops]] only.)'''
<ul>
<li>The token is now case-insensitive.</li>
<li>Added optional arguments, which can be specified in any order:
{| class="wikitable"
|-
! argument
! effect
|-
| <samp>@edible {{t|include}}</samp>
| Whether food/drink items can be suggested (i.e. objects with an [[Modding:Objects|edibility]] > 0). This can be <samp>true</samp> (only suggest edible items), <samp>false</samp> (only suggest non-edible items), or omitted (suggest any).
|-
| <samp>@recipe {{t|include}}</samp>
| Whether recipes can be suggested (i.e. shop item entries with <samp>IsRecipe: true</samp>). This can be <samp>true</samp> (only suggest recipes), <samp>false</samp> (only suggest non-recipes), or omitted (suggest any).
|-
| <samp>@ignoreFiltersIfNeeded</samp>
| If set, the <samp>@edible</samp> and <samp>@recipe</samp> arguments will be ignored if they'd result in no item being suggested.
|}</li>
|}</li>
</ul>
</ul>

Revision as of 22:05, 31 October 2025

←Index

This page is for mod authors. Players: see the mod compatibility list instead.

This is a potential patch before the announced Stardew Valley 1.7 to release bug fixes, but has no planned release date.

This page helps mod authors prepare their mods for the upcoming Stardew Valley 1.6.16, and documents some of the changes and new functionality.

FAQs

SMAPI mod compatibility over time.

What's changing?

Stardew Valley 1.6.16 mainly has small changes and improvements for mod authors. See the sections below for more details.

Is this the modapocalypse?

No. SMAPI will rewrite most code for the changes, so the vast majority of mods should be unaffected by these changes. Some mods (e.g. those which use Harmony) may need an update.

How to update your mod

Here's a suggested 'quick start' guide to update a mod for Stardew Valley 1.6.16.

For C# mods:
  1. Update for Stardew Valley 1.6.9 if you haven't already.
  2. Rebuild the solution.
  3. Fix any build errors and review any build warnings. You can search this page and previous migration guides for relevant info as needed.
  4. Increment your mod version in manifest.json.
    (Some mods may be added to SMAPI's compatibility blacklist due to runtime errors. Incrementing the mod version will fix that if so.)
  5. Test to make sure the mod works.
  6. Skim through this page, and check any section that might be relevant to the mod.
For Content Patcher packs:
  1. Update for Stardew Valley 1.6.9 if you haven't already.
  2. Skim through this page, and check any section that might be relevant to the mod.
For content packs which use another framework:
See the documentation for the framework mod. Often you won't need to update the content pack if the framework mod itself was updated.

Data asset changes

Data/Achievements

This has been overhauled into a data model asset, with...

  • support for string achievement IDs;
  • translations moved into a new Strings/Achievements asset;
  • and new fields like IsSharedAchievement and SendToChat which weren't available in the old format.

The data asset now consists of a string → model lookup, where...

field effect
basic info
DisplayName
Description
A tokenizable string for the achievement's in-game display name and description.
IsSharedAchievement (Optional) Whether the achievement should be unlocked for all players when any player unlocks it. Default false.
in-game behavior
UnlockCondition (Optional) A game state query which indicates when the achievement should be unlocked. If omitted, it must be unlocked manually (e.g. via the addAchievement event command).
KnownBeforeUnlockCondition (Optional) If ShowInCollection is true, a game state query which indicates whether the achievement name and description should be shown on the collection tab before it's been unlocked; if false, it'll be shown as "???" with no description. Defaults to always shown.
ShowInCollection (Optional) Whether the achievement should be listed on the collections tab. Default true.
ShowNotification (Optional) Whether to show a HUD notification when the achievement is unlocked. Default true.

This should usually be true for custom achievements. The field exists to support platform-only achievements in the base game.

SendToChat (Optional) Whether to send a message to multiplayer chat when a player unlocks the achievement. Default false.
advanced
PlatformIds (Optional) The achievement's ID within each platform, if different from the achievement ID. Default none.

This generally isn't applicable for custom achievements.

CustomFields (Optional) The custom fields for this entry.

Data/ChairTiles

  • Fixed support for tilesheet asset names containing a dot. (For example, a tileseet asset named ExampleAuthor.ModName_Tilesheet now correctly uses that as the data key instead of ExampleAuthor.)

Data/CookingRecipes

These cooking recipe keys were changed to match their object name (like all the other recipes):

old name new name
Cheese Cauli. Cheese Cauliflower
Cookies Cookie
Cran. Sauce Cranberry Sauce
Dish o' The Sea Dish O' The Sea
Eggplant Parm. Eggplant Parmesan
Vegetable Stew Vegetable Medley

This has no effect on the display text, but mods which reference these recipe keys will need to be updated.

Data/LostItemsShop

Added one new field:

field effect
RequireCondition (Optional) The game state queries which must match to add this item. The Target player is the one being checked.

This field should generally only be used with deterministic game state queries.

If you specify multiple criteria fields, only one is applied in this order: RequireMailReceived, then RequireEventSeen, then RequireCondition.

Data/PassiveFestivals

Added one new field:

field effect
InLocations (Optional) The locations in which the festival happens. This affects various game logic like NPC dialogues, tent placement restrictions, weather, etc. If omitted, defaults to the keys in MapReplacements.

Data/SpecialOrders

  • Added one new field:
    field effect
    CanBeCancelled (Optional) Whether the special order can be cancelled. In multiplayer, any player cancelling the special order will remove it for all players. Default false.

    And improved one field:

    field effect
    Duration This can now be set to "Indefinite" for a special order with no expiry. It will remain active until it's completed or cancelled. Consider enabling CanBeCancelled if applicable.

Data/Tools

Added one field:

field effect
ContextTags (Optional) The custom context tags to add for this item (in addition to the tags added automatically based on the other item data), specified as an array.

Data/Weapons

Added one field:

field effect
ContextTags (Optional) The custom context tags to add for this item (in addition to the tags added automatically based on the other item data), specified as an array.

Changes for all mod authors

Context tag changes

Added new context tags:

context tag item types effect
axe
error_tool
fishing_rod
generic_tool
hoe
lantern
melee_weapon
milk_pail
pan
pickaxe
raft
shears
slingshot
wand
watering_can
tools and weapons The C# type which implements the tool or melee weapon.

Note that the vanilla scythes are melee_weapon. See also the is_scythe context tag below.

fish_skip_minigame any If the player catches this item while fishing, it'll be caught directly without the fishing minigame. This matches the behavior when catching junk items like seaweed (which now have the context tag where needed).
ignore_gift_limits any giftable item Whether this item ignores the gift limits when given as a gift (similar to stardrop tea). Items with this tag don't count towards the daily/weekly limits, and can be given even if those limits have been reached.
is_scythe tools and weapons Marks the tool as a scythe. This is set for vanilla scythes through Data/Weapons.
spawns_butterflies furniture Whether butterflies spawn around this furniture, similar to the butterfly hutch.
trash_bear_ignore any cooking recipe output When the trash bear requests random items produced by cooking recipes, items with this context tag will be skipped.
upgrade_level_* tools and weapons The tool upgrade level. These tags are added automatically based on the tool's current level. For example, a copper axe will have both upgrade_level_0 (base axe) and upgrade_level_1 (copper axe).

Debug command changes

  • Added new commands:
    command description
    heldItem Shows info about the currently held item like its name, category, item ID, and context tags.
    mineAll
    volcanoAll
    warpAll
    Warps you through every top-level location (warpAll), mine levels 1–120 and the quarry mine (mineAll), or volcano dungeon level (volcanoAll). After 1.5 seconds in each location, you'll automatically warp to the next. This will continue until you've warped through every available location, at which point you'll warp one last time to your farmhouse/cabin.

    ⚠️ Side effects:

    • warpAll will remove the perfection flag on your save.
    • mineAll will affect stats like 'deepest level reached' and achievements like To The Bottom.
    testAchievement <achievement ID> Shows diagnostic info about an achievement's unlock conditions and the current player's progress towards them. The <achievement ID> is the achievement's unique key in Data/Achievements.
  • Improved existing commands:
    command description
    achieve
    achievement
    Merged achieve <ID> (unlock platform achievement) and achievement <ID> (unlock in-game achievement) into one command that unlocks both automatically based on the achievement data. The achieve command is now just an alias for achievement.
    animalInfo
    characterInfo
    daysPlayed
    gamepad
    Now shows output in the console instead of showing a HUD notification.
    jump Fixed error if the NPC doesn't exist.
    perfection Fixed error when run on a save which already has some requirements partly met.
    toggleTimingOverlay Now shows more metrics like FPS and memory usage.
  • Removed some commands:
    command description
    furniture
    hat
    pole
    shirt
    tv
    wallpaper
    Replaced by generic commands like item and fuzzyItemNamed.
    getIndex
    listTags
    lookup
    qualifiedId
    Replaced by heldItem.
    lantern
    refuel
    stopRafting
    These were unimplemented or cut content.
    shiftToolbarLeft
    shiftToolbarRight
    Replaced by in-game hotkeys.

Diagnostic chat commands

  • Stardew Valley 1.6.16 enables hidden 'diagnostic commands' in chat, which are enabled for all players but not shown by /help. These allow specific console debug commands to be run even if cheat commands aren't enabled:
    command description
    diagnostic commands
    daysPlayed,
    dp
    Shows the number of in-game days since the game started (starting at 1 on spring 1 in year 1).
    animalInfo Shows the total number of farm animals in all locations.
    CharacterInfo Shows the total number of NPCs in the current location.
    doesItemExist Syntax: doesItemExist <item ID>

    Shows whether the given qualified or unqualified item ID exists anywhere in the world. This doesn't indicate where the item is located if any were found. See the whereIsItem command for more detailed output.

    gameQuery,
    gq
    Syntax: gameQuery <query>

    Parses a game state query and shows the result.

    getStat Syntax: getStat <stat key>

    Shows the value of a tracked stat.

    heldItem Shows info about the currently held item like its name, category, item ID, and context tags.
    listLights Shows debug info about all currently active light sources.
    logBandwidth Toggles whether multiplayer network bandwidth info should be written to the SMAPI console or (if /logFile was enabled) the log file.
    logFile Begins logging information to a file on disk, if supported by the platform. This can be useful for troubleshooting errors.
    logSounds Toggles whether each sound effect played should be written to the SMAPI console or (if /logFile was enabled) the log file.
    mineInfo Shows two mine-related stats (lowest level reached and deepest mine level).
    printPlayerPos,
    ppp
    Shows the player's current position in both tile and pixel coordinates.
    sdlVersion,
    sdlv
    Shows the current SDL version. (SDL is the low-level input library used by the game.)
    showExperience Syntax: showExperience <skill ID>

    Shows the player's total experience points for the given skill. The <skill ID> is one of 0 (farming), 1 (fishing), 2 (foraging), 3 (mining), or 4 (combat).

    testAchievement Syntax: testAchievement <achievement ID>

    Shows diagnostic info about an achievement's unlock conditions and your progress towards them. The <achievement ID> is the achievement's unique key in Data/Achievements.

    toggleTimingOverlay,
    tto
    Shows an on-screen overlay with basic info for performance monitoring.
    tokens Syntax: tokens <expression>

    Parses a tokenizable string and shows the result.

    version Shows the game's assembly version. This usually matches the version shown in-game (e.g. 1.6.15 build 24356 has assembly version 1.6.15.24356).
    whereIsItem,
    whereItem
    Searches the entire world (including other players' inventories) for items matching the qualified or unqualified item ID, and lists all matches.

    Unlike the equivalent console command, this doesn't list spawned objects like artifact spots and weeds.

    other commands
    copyOutfit Copies your current outfit (i.e. pants, shirt, etc) into your desktop clipboard in an XML format, and also shows it in the chat box.
    holdItem Make your player character play the 'hold up item' animation using your currently selected item.
    sprinkle Show a sparkle animation around your player character (the same animation used when applying fairy dust to a machine).
  • It also removes these chat commands:
    command reason
    logFile
    sdlVersion
    Replaced by the equivalent debug commands above.

Dialogue changes

  • Added Characters/Dialogue/Default asset. Dialogues in this asset apply to every NPC, except where the key is also defined in their own dialogue asset. This replaces some previous translations.
  • Added new dialogue keys in Characters/Dialogue/*:
    key description
    passive festival dialogue Identical to location dialogue, but you can use the passive festival ID as the location name. Any passive festival dialogue has priority over location dialogue in the same location.
    FirstMeeting If set, shown the first time the player ever speaks to that NPC.
    AskedToDance_Prompt
    AskedToDance_Prompt_Spouse
    AskedToDance_Ask
    AskedToDance_Cancel
    At the Flower Dance, the prompt which lets the player ask the NPC to dance. If omitted, defaults to the matching key in Characters/Dialogue/Default.
    TermsOfEndearment_Roommate
    TermsOfEndearment_Spouse
    TermsOfEndearment_Spouse_Rare
    TermsOfEndearment_Spouse_VeryRare
    The pet names which the NPC can use when addressing the player. This affects the message shown above their head when the NPC says good night (80% of the time), and the %endearment and %endearmentlower marriage dialogue tokens (not used in any vanilla dialogues).

    Each translation is a comma-delimited list of possible pet names. Each time it's displayed, one of the values will be selected at random.

    The translations are selected in this order:

    1. TermsOfEndearment_Roommate if the NPC is a roommate.
    2. TermsOfEndearment_Spouse_VeryRare (8% chance) or TermsOfEndearment_Spouse_Rare if the player has at least 9 hearts with the NPC, and the game requested a 'happy' term. This is only used when the NPC says good night, with a 10% chance.
    3. TermsOfEndearment_Spouse if the player has at least 9 hearts with the NPC.
    4. Otherwise the NPC just uses the player's name.

    If omitted, defaults to the matching key in Characters/Dialogue/Default.

  • Added new conversation topics:
    id trigger
    specialOrderComplete_<id> Player completes the given special order for the first time.
  • Fixed <location>_<x>_<y> and <location>_<dayOfWeek> dialogue keys never used in 1.6.0+ if a player has at least two hearts with the NPC.
  • Fixed location dialogues not recognizing the spring prefix (they only allowed summer, fall, and winter).
  • Fixed $r response IDs not tracked correctly if you reuse an NPC reaction key across multiple $r options.

Event changes

New event commands

command description
addAchievement <achievement ID> Unlock an achievement for the current player. The <achievement ID> can be a platform achievement ID (like Achievement_LocalLegend) or internal ID (like 17 for Gourmet Chef).
addActor <x> <y> <direction> Add a character or player to the event. This is mostly equivalent to adding them through the character positions field, but can be done at any point in the script (e.g. for use with goto for event variations).
completeQuest <id> Mark a quest complete. If the quest has no reward to collect, this also removes it from the in-game journal.

Improved existing commands

command description
gainSkill Added argument validation.
spriteText The [text] argument can now be a translation key to get the text from.

Fish pond changes

  • Fixed the translation key suffix from a custom fish_talk_* context tag being capitalized differently from the vanilla suffixes. (For example, fish_talk_some_example would incorrectly result in a someExample suffix instead of SomeExample.)

Game state query changes

  • Added new game state queries:
    query effect
    COMPLETED_ALL_MONSTER_SLAYER_GOALS Whether all monster eradication goals have been completed.
    IS_DEBRIS_WEATHER
    IS_GREEN_RAINING
    IS_LIGHTNING
    IS_RAINING
    IS_SNOWING
    Whether the weather in the given location sets the related weather field. For example, IS_RAINING is true for the Rain, GreenRain, and Storm weathers.
    LOCATION_MINE_DIFFICULTY <location> <min> [max] Whether the given location is in the mines or Skull Cavern, and its difficulty level is between <min> and [max] (default unlimited) inclusively. Difficulty 0 is the default difficulty, and modifiers like the Shrine of Challenge or some special orders each increase it by one.
    LOCATION_MINE_LEVEL <location> <min> [max] Whether the given location is in the mines or Skull Cavern, and its floor level is between <min> and [max] (default unlimited) inclusively. The Skull Cavern implicitly starts at level 121 (e.g. Skull Cavern level 10 is mine level 130).
    PLAYER_HAS_ALL_STARDROPS <player> Whether the specified player(s) have found every stardrop.
    PLAYER_HAS_DEEPEST_MINE_LEVEL <player> [min] [max] Whether the specified player(s) have reached a mine level between [min] (default 1) and [max] (default unlimited) inclusively.
    PLAYER_HAS_PREVIOUS_CONVERSATION_TOPIC <player> <id>+ Whether the specified player(s) have previously had any of the specified conversation topics active. This doesn't include current topics (unless they're a repeat of a previous one).
    PLAYER_QUEST_ACTIVE <player> <id>+
    PLAYER_QUEST_COMPLETE <player> <id>+
    Whether the specified player(s) have any of the specified quest IDs open (PLAYER_QUEST_ACTIVE) or previously completed (PLAYER_QUEST_COMPLETE).
    PLAYER_SHIPPED_ALL_BASIC_ITEMS <player> Whether any one of the specified player(s) have shipped at least one of each basic item whose shipment is tracked by the game.
    PLAYER_SHIPPED_MONOCULTURE <player> [min] [max] Whether any one of the specified player(s) have shipped between [min] (default 300) and [max] (default unlimited) inclusively of any crop for which CountForMonoculture in Data/Crops is true.
    PLAYER_SHIPPED_POLYCULTURE <player> [min] Whether any one of the specified player(s) have shipped at least [min] (default 15) of any crop for which CountForPolyculture in Data/Crops is true.
    PLAYER_INVENTORY_SIZE <player> <minSize> Whether any one of the specified player(s) inventory has at least <minSize> slots unlocked. (Tip: You can check "less than" by negating the condition.)
  • Improved some queries:
    query changes
    PLAYER_HAS_ALL_ACHIEVEMENTS <player> [achievement ID]+ Added optional [achievement ID] field to specify the list of required achievements. If omitted, defaults to all achievements in Data/Achievements (including the platform-only achievements which weren't in the asset before 1.6.16).
    PLAYER_HAS_CAUGHT_FISH <player> [fish item ID]+ Now accepts unqualified item IDs too.
    PLAYER_STAT <player> <stat key> [min value] [max value] The [min value] argument is now optional.

Item spawn field changes

  • Added new item spawn fields:
    field effect
    Color (Optional) For item types that support it (e.g. objects and clothes), a tint color to apply to the produced item. Default none.
    IsSpecial (Optional) Whether to mark the produced item as a special permanent item, which can't be destroyed or dropped. Default false.
    ObjectIsQuestItem (Optional) Whether to mark the dropped item as a quest item. This enables special rules like not being able to gift the item, and the item getting auto-recovered when it's lost in some cases. Default false.
    TempData (Optional) Set temporary item info that's not synchronized in multiplayer or written to the save file. This is somewhat specialized, and does nothing if there's no game logic or C# mod logic which reads it. Default none.

    For example, this adds a custom flag:

    "TempData": {
        "SomeExampleKey": "Example Value"
    }
    

    A C# code can then check for the field on the dropped items:

    if (item.TryGetTempData("SomeExampleKey", out object value))
        ...;
    
  • The ObjectColor field is obsolete and replaced by Color. Content packs which set it will still work (since the game will pass the value through to Color automatically).

Map property changes

  • Added new map properties:
    action effect
    FarmHouseBed <x> <y> [item ID]
    (valid in farm or farmhouse)
    Sets the initial bed to place when creating the farmhouse or cabin. The arguments are:
    • <x> <y>: the tile position at which to place it.
    • [item ID]: if set, the qualified or unqualified item ID for the bed furniture to place. This must match a furniture item with item type Bed. Defaults to (F)2048 (single bed).

    If omitted, a single bed is placed at position (9, 8).

  • Improved map properties:
    action changes
    FarmHouseFlooring
    FarmHouseFurniture
    FarmHouseStarterGift
    FarmHouseStarterSeedsPosition
    FarmHouseWallpaper
    Can now be set on the farmhouse map to override the farm map's equivalent property.
    FarmHouseFurniture Fixed property only allowing numeric item IDs.

Quest changes

Schedule changes

Added new schedule keys:

syntax summary
roommate_<festival ID>_<festival day>
roommate_<festival ID>
roommate_<season>_<day of month>
roommate_<day of week>
roommateJob
Equivalent to the marriage schedules, but only apply if the NPC is a roommate.

If a roommate NPC has both roommate* and marriage* schedules, it'll use a roommate* schedule if any of them apply. If none apply, it'll default to marriage* schedules. You can avoid that by setting the fallback roommate schedule key.

marriage
roommate
A fallback schedule to use if a more specific schedule doesn't apply. If this is omitted and no other schedule applies, the NPC won't have a schedule that day.

Stat changes

Added new stats:

stat key tracks
Player activity
CookingRecipesUsed The number of cooking recipes which the player used at least once.
CookingRecipesNotUsed The number of cooking recipes which the player never used.
CraftingRecipesUsed The number of crafting recipes which the player used at least once.
CraftingRecipesNotUsed The number of crafting recipes which the player never used.
FishTypesCaught The unique fish species caught by the player while fishing.
FishTypesNotCaught The unique fish species that were never caught by the player while fishing.
FriendsWith5Hearts The number of NPCs with which the player has 5+ hearts of friendship.
FriendsWith10Hearts The number of NPCs with which the player has 10+ hearts of friendship.
World activity
ArtifactsDonated The number of artifacts donated to the museum by any player.
ArtifactsNotDonated The number of artifacts missing from the museum.

Trigger action changes

  • Added new trigger actions:
    action effect
    CompleteQuest <quest ID> Complete all active quests with this ID in the player's journal.
    IncreaseBackpackSize <amount> Increase the backpack size of the local player by <amount>.
    HoldUpItem <itemId> Start animation to hold up the specified item above the player's head.
    HoldUpItemWithMessage <itemId> [nameOverride] Start animation to hold up the specified item above the player's head and show the appropriate message. I [nameOverride] is specified, it overrides the display name of the item (only usable with SpecialItem at the moment).
    MultiplayerGlobalMessage <translationKey> [arg1] [arg2] [arg3]... Show a global chat message in multiplayer. The translation key needs to exist in Strings/UI and must be prefixed with Chat_ within that file (meaning you would use "SomeMessage" in MultiplayerGlobalMessage and "Chat_SomeMessage" in Strings/UI). Any additional arguments after the translation key (which are parsed as tokenizable strings) will be used as substitution values using the normal notation. (ex. MultiplayerGlobalMessage "SomeMessage" "meow" "kitty cat" and "Chat_SomeMessage": "{1} goes {0}" would result in the message "kitty cat goes meow")

Tokenizable string changes

  • Improved an existing token:
    token format output
    [SuggestedItem [interval] [sync key] [options]] (For shops only.)
    • The token is now case-insensitive.
    • Added optional arguments, which can be specified in any order:
      argument effect
      @edible <include> Whether food/drink items can be suggested (i.e. objects with an edibility > 0). This can be true (only suggest edible items), false (only suggest non-edible items), or omitted (suggest any).
      @recipe <include> Whether recipes can be suggested (i.e. shop item entries with IsRecipe: true). This can be true (only suggest recipes), false (only suggest non-recipes), or omitted (suggest any).
      @ignoreFiltersIfNeeded If set, the @edible and @recipe arguments will be ignored if they'd result in no item being suggested.

    Display shops

    In addition to being able to add or change what is sold on Pierre's counter, you can also create your own.

    Display shops are similar to normal shops, except they show their stocked items in-world. They have a fixed size which is filled from the item pool until it is full (or there is nothing left to add).

    Display shops are stocked at the beginning of the day, and not restocked until the next day. They are stocked per-farmhand so that they can be different for everyone (such as with backpack upgrades), however a LimitedStockMode of Player will sync the stock between players, just like a normal shop.

    Display shop items are always purchased one at a time - a higher stack size means it can be bought multiple times.

    The data asset, located at Data/DisplayShops, consists of a string -> model lookup, where...

    • The key is the ID of the display shop.
    • The value is a model with the fields listed below.
    field effect
    basic info
    OpenCondition (Optional) A Game State Query for determining if the display shop if is open (that is, if the items shown are purchasable or not). If not specified, it will always be open.
    ClosedMessage (Optional) A Tokenizable String for what message to show if the shop is closed. Defaults to (after token parsing) "Closed.".
    Currency (Optional) The currency to use for the price, with the same options as in Data/Shops. Defaults to 0 (standard gold).
    cosmetic
    PurchaseSound (Optional) A sound to play upon making a successful purchase. Defaults to "purchaseClick".
    ItemWorldOffset (Optional) A Vector2 of how far to move the display item from the tile that has the purchase tile action. For example, Pierre's shop counter has a value of 0 -72 so that the items show on top of the counter. Defaults to 0.
    stocked products
    ApplyProfitMargins (Optional) Whether or not to apply profit margins by default for items in this shop. Defaults to null.
    PriceModifiers (Optional) Price modifiers to apply to items in this shop. Behaves the same way as Data/Shops PriceModifiers.
    PriceModifierMode (Optional) Price modifier mod for applying price modifiers to items in this shop. Behaves the same way as Data/Shops PriceModifierMode.
    ItemCountToSell (Optional) The amount of items that can be sold each day.
    ItemPool (Optional) The items to use when populating the shop. This list is sorted by Precedence before being used, with entries of the same precedence being shuffled together. This list consist of values with these fields:
    field effect
    common fields See Items for Shops for the item fields supported by display shop items.

    Notes:

    • If set to an item query which returns multiple items, all of them will be valid choices for the shop.
    • Unlike other item spawn fields, you don't have to have a valid item spawn from each entry. This can be useful when used in conjunction with other fields for purchases that do other things (via ActionsOnPurchased).
    • Unlike other item spawn fields, ObjectDisplayName is supported for any entry (not just Object items).
    DisplayTextureOverride (Optional) The path to the texture to use instead of the item texture. *Required when there is no valid item for this entry.*
    DisplayTextureRegionOverride (Optional) The region of the texture to display when using DisplayTextureOverride. *Required when there is no valid item for this entry.*
    DisplayOffset (Optional) The amount to offset drawing this item when shown in the display shop. This is useful for non-standard-sized items.
    DisplayScale (Optional) How much to scale the item when it is shown. Defaults to 4 (just like most things in the game).
    ItemBlurb (Optional) Text to show in a dialogue box before the item prompt appears.
    ItemBlurbSpeaker (Optional) The NPC that will "speak" the ItemBlurb, if desired.
    Precedence (Optional) The precedence for this item to be checked, with higher being sooner. Defaults to 0.

    To make the display shop show in world, you need to use a new tile action: DisplayShop <displayShopId> <itemIndex>, with displayShopId being the ID of the entry in Data/DisplayShops and itemIndex being which index of the stocked items to make available (based on the corresponding ItemCountToSell value).

    For example, here's how to add a new entry to Pierre's counter (TODO: change to content patcher format instead of XML):

              <Item>
                <ItemId>(O)0</ItemId>
                <Price>123</Price>
                <AvailableStock>3</AvailableStock>
                <ItemBlurb>wow some weeds. perfect for honey</ItemBlurb>
                <ItemBlurbSpeaker>Penny</ItemBlurbSpeaker>
                <Precedence>-100</Precedence>
              </Item>
    

    Other changes

    • Added validation for schedule offset command in end-of-route animations.
    • Custom achievements now benefit from retroactive unlock too if they implement the new UnlockCondition field in Data/Achievements.
    • Fixed crash when loading a save with missing building interiors.
    • Fixed RejectItem_* dialogue disabling the NPC's normal dialogue after it's shown.
    • Fixed NPC FlowerDanceCanDance field ignored for non-datable NPCs with no dialogue.
    • Fixed fruit trees' falling leaves not applying the tree's cosmetic season.
    • Fixed issue where a building placed inside a decoratable location would cause the flooring under it to not change when you put down a different flooring.

    Changes for C# mod authors

    Instance statics no longer affect mod assemblies

    In multiplayer, split-screen mode works by swapping the values of static fields for each screen (called instanced statics). In previous versions, Stardew Valley would scan all loaded assemblies for static fields marked with [InstancedStatic] attributes except a few ignored assemblies like MonoGame.

    In Stardew Valley 1.6.16, the game now only does this for the main game assembly to improve performance. If a mod was using [InstancedStatic], it should use SMAPI's built-in per-screen data utility instead.

    AssetNameUtility

    The new AssetNameUtility class has methods for working with asset names:

    method usage
    Normalize A low-level method which normalizes path separators in an asset name. For example:
    string assetName = AssetNameUtility.Normalize("Characters/\\/Abigail"); // produces "Characters/Abigail"
    

    Consider using SMAPI's PathUtilities.NormalizeAssetName instead, which is more thorough.

    TryParseTranslationKey Parses a translation key into its component parts. For example:
    if (AssetNameUtility.TryParseTranslationKey("Strings/UI:Confirm", out string assetName, out string fieldKey, out string error))
       ...;  // assetName: Strings/UI, fieldKey: Confirm, error: null
    

    This doesn't check whether the asset or key exists; see Game1.content.IsValidTranslationKey to do that.

    EventValidator

    Overview

    The new EventValidator class analyses event scripts to detect issues like...

    • command names which don't match a registered command or alias;
    • command arguments which don't match those expected by the command;
    • and custom rule violations based on the EventValidator.CommandValidators field (which will be used for commands like goto in the upcoming Stardew Valley 1.7).

    This is mainly meant to implement unit tests for events. For example, to validate all events in a data asset:

    string assetName = "Data/Events/Farm";
    var events = Game1.content.Load<Dictionary<string, string>>(assetName);
    
    var validator = new EventValidator();
    foreach ((string key, string script) in events)
    {
        foreach (var issue in validator.Validator(assetName, key, script))
            Assert.Fail($"Validation failed for event '{key}' > command '{issue.CommandText}': {issue.SuggestedError}.");
    }
    

    Command argument validation

    Argument validation is enabled if the command's handler method has an EventArguments attribute, which defines the argument pattern using a special syntax. Each command can list multiple patterns, and it'll be considered valid if any of them matches. If the pattern is an empty string, the validator will ensure no arguments are provided.

    For example, the default showFrame command is defined like this:

    [EventArguments("int", "actor int bool?")]
    public static void ShowFrame(Event @event, string[] args, EventContext context)
    

    An argument pattern consists of space-delimited tokens, where each token defines the format for an argument. For example, actor int bool? has three tokens representing three arguments: an actor name, a positive integer, and an optional boolean.

    These are the tokens recognized by the validator:

    token meaning
    generic argument types
    bool A boolean value (true or false).
    float A positive number with optional decimal point (like 5 or 0.5).
    -float A number with optional decimal point and optional negative sign (like 5, -5, or -0.5).
    int A positive integer (like 5).
    -int An integer with optional negative sign (like 5 or -5).
    string A quoted sequence of arbitrary text like "some words here". If the argument has no quotes, this is equivalent to the word token.
    word A simple sequence of letters, numbers, periods, and/or underscores (usually an ID or similar value). While the command will accept quotes, they're redundant and will be rejected by the validator.
    remainder One or more arguments of any type.
    specific string formats
    actor An actor name in the event format (like Abigail or Kent?).
    assetName An asset name like Data/Achievements.
    direction A direction which can be specified as either a number (like 0) or name (like up).
    itemId An item ID which can be qualified or unqualified (like (O)MossySoup or MossySoup).
    translationKey A translation key like Strings/Locations:SomeKey.
    custom formats
    '...' The literal text or regex pattern to match, like 'continue' or '[\w-]+'.

    In addition, you can extend tokens with these indicators:

    • Suffix with + for repeating argument of that type. For example, int+ would allow both 5 and 5 6 7.
    • Suffix with ? for an optional argument which can be omitted. All tokens after this token must also be optional. (You can have optional repeating arguments like int+?.)
    • Infix with | for a parameter which can be one of multiple types. For example int|bool will allow either integer or boolean values.

    Content manager changes

    The base game's 'content manager' API changed in Stardew Valley 1.6.16. This mainly affects LanguageCode, Game1.content, and other content manager fields. This does not affect mods which only use SMAPI's content API.

    In particular:

    • The game now uses IContentManager instead of LocalizedContentManager in most places. That includes fields like Game1.content, methods like Game1.content.CreateTemporary(), etc. The new interface also includes full IntelliSense docs.
    • Moved three types:
      type changes
      LocalizedContentManager Moved from the StardewValley namespace into StardewValley.ContentManagement.
      LocalizedContentManager.LanguageCode
      LocalizedContentManager.LanguageChangedHandler
      • Moved from the StardewValley namespace into StardewValley.ContentManagement.
      • Moved out of the nested type (e.g. change LocalizedContentManager.LanguageCode to just LanguageCode in your mod code).
    • And changed some LocalizedContentManager members:
      type member changes
      LocalizedContentManager CurrentLanguageCode
      CurrentLanguageLatin
      CurrentLanguageString
      CurrentModLanguage
      GetDefaultLanguageCode()
      OnLanguageChange
      SetModLanguage(…)
      These are no longer static, so they need to be called through an instance like Game1.content. For example, change LocalizedContentManager.GetDefaultLanguageCode() in mod code to Game1.content.GetDefaultLanguageCode().

      Some of these are also renamed (see the next rows).

      CurrentCulture Removed (it was unused).
      CurrentLanguageCode Renamed to LanguageCode.
      CurrentLanguageLatin Renamed to LanguageUsesLatinFont.
      CurrentLanguageString Renamed to LanguageString.
      CurrentModLanguage Renamed to LanguageModData.
      GetCurrentLanguage() Removed. Use the LanguageCode property instead.
      OnLanguageChange Renamed to OnGlobalLanguageChanged.

    Item changes

    • Added IItemDataDefinition.GetContextTags(itemData) method, so custom item data definitions can add context tags from their data if applicable.
    • Fixed item.CopyFieldsFrom(other) always setting the stack size for the copy to 1.

    Utility fields & methods

    • 1.6.16 adds some new utility methods and fields. For example:
      type member usage
      PassiveFestivalData CoversDate(…) Get whether the festival is active on the given date.
      GetFestivalLocations() Get the locations in which the passive festival happens (based on the InLocations or MapReplacements fields in Data/PassiveFestivals).
      TryGetLocationReplacement(…) Get the new location to load instead of a normal one when the passive festival is active. For example, the Night Market replaces Beach with BeachNightMarket.
      Utility TryGetPassiveFestivalDataForDayHere(…) Get the passive festival which occurs on a given date within the given location, if any. This is equivalent to Utility.TryGetPassiveFestivalDataForDay(…), but also checks the given location against the passive festival's InLocation or MapReplacements field.

    Other breaking API changes

    (This section is meant as a quick reference if you have build errors; there's no need to read through it otherwise.)

    Removed or renamed types

    These classes were removed in 1.6.16:

    type migration
    Events.DiaryEvent Removed. This was unused.

    Other API changes

    These class members changed in 1.6.16:

    type member migration
    Boots price Removed. This was never used, since boots prices are calculated dynamically.
    Bush draw(SpriteBatch batch, int yDrawOffset) Removed. Set the drawOffset field and then call draw(SpriteBatch) instead.
    yDrawOffset Replaced by drawOffset, which is now public and a Point.
    FishingRod lastCatchWasJunk Renamed to lastCatchSkippedMinigame to more accurately convey what it does.
    NPCDialogueResponse
    Response
    id
    friendshipChange
    extraArgument
    hotkey
    responseText
    Fields changed to get-only properties.
    responseKey
    • Field changed to get-only property.
    • Previously NPCDialogueResponse stored the NPC's reaction dialogue key in this field. You should now use npcReactionKey for that instead.
    SetHotKey(…) Removed. Set the hotkey through the constructor instead.
    StartupPreferences levelTenCombat
    levelTenFishing
    levelTenForaging
    levelTenMining
    Removed. These were unused.

    Other changes

    • Added event.floorSprites field for temporary animated sprites that should be drawn on the ground (e.g. under NPC shadows).
    • Added GameStateQuery.TryResolveCommandName method to get the actual query name given a case-insensitive name or alias.
    • The game now uses forward slashes in all asset names (like Maps/Town instead of Maps\Town). This shouldn't affect most mods, since SMAPI already converted all asset names to forward slashes.
    • Removed broken Lantern tool, Raft tool, and their related logic.
    • TrashBear item ID fields are now qualified.
    • Fixed Event.TryGetEventCommandHandler not loading commands if it's called before any other methods.
    • Fixed machine auto-load leaving empty slots in chests when taking a secondary ingredient.
    • Fixed issue where placing a storage furniture (e.g. a dresser or fish tank) on a table would discard any items inside it.

    Name translation changes for wiki maintainers

    Some in-game item and monster names were retranslated in some languages for clarity or correctness.

    This list is mostly provided to help wiki maintainers update pages, so it doesn't include names which only changed capitalization, changed ' (straight apostrophe) to ’ (curly) in French, or aren't visible to vanilla players (like mine rocks).

    Objects

    Hungarian
    item old name new name
    Artichoke Dip Articsóka mártás Articsókamártás
    Blackberry Cobbler Szeder kosár Szedres kosárka
    Bone Mill Csontőrlő Csontdaráló
    Chocolate Cake Csokis torta Csokitorta
    Cranberry Candy Vörös áfonyás cukorka Vörös áfonyás üdítő
    Geode Crusher Geóda zúzó Geódazúzó
    Maple Syrup Juharfaszirup Juharszirup
    Tea Sapling Tea csemete Teacsemete
    Woodcutter's Weekly Favágok hetilapja Favágók hetilapja
    Russian
    item old name new name
    Aged Roe (flavored) Вяленая икра (Альбакор) Вяленая икра альбакора
    Вяленая икра (Анчоус) Вяленая икра анчоуса
    Вяленая икра (Морской черт) Вяленая икра Морского черта
    Вяленая икра (Рыба-капля) Вяленая икра рыбы-капли
    Вяленая икра (Голубой дискус) Вяленая икра голубого дискуса
    Вяленая икра (Лещ) Вяленая икра леща
    Вяленая икра (Сомик) Вяленая икра сомика
    Вяленая икра (Карп) Вяленая икра карпа
    Вяленая икра (Сом) Вяленая икра сома
    Вяленая икра (Голавль) Вяленая икра голавля
    Вяленая икра (Гребешок) Вяленая икра гребешка
    Вяленая икра (Сердцевидка) Вяленая икра сердцевидки
    Вяленая икра (Краб) Вяленая икра краба
    Вяленая икра (Рак) Вяленая икра рака
    Вяленая икра (Багрянник) Вяленая икра Багрянника
    Вяленая икра (Дорада) Вяленая икра дорады
    Вяленая икра (Угорь) Вяленая икра угря
    Вяленая икра (Камбала) Вяленая икра камбалы
    Вяленая икра (Пятнистый криворот) Вяленая икра пятнистого криворота
    Вяленая икра (Ледорыб) Вяленая икра Ледорыба
    Вяленая икра (Ледорыб-младший) Вяленая икра Ледорыба-младшего
    Вяленая икра (Бычок) Вяленая икра бычка
    Вяленая икра (Палтус) Вяленая икра палтуса
    Вяленая икра (Сельдь) Вяленая икра сельди
    Вяленая икра (Ледопип) Вяленая икра ледопипа
    Вяленая икра (Большеротый окунь) Вяленая икра большеротого окуня
    Вяленая икра (Лавовый угорь) Вяленая икра лавового угря
    Вяленая икра (Легенда) Вяленая икра Легенды
    Вяленая икра (Легенда II) Вяленая икра Легенды II
    Вяленая икра (Змеезуб) Вяленая икра змеезуба
    Вяленая икра (Крылатка) Вяленая икра крылатки
    Вяленая икра (Омар) Вяленая икра омара
    Вяленая икра (Полуночный карп) Вяленая икра полуночного карпа
    Вяленая икра (Ночной кальмар) Вяленая икра ночного кальмара
    Вяленая икра (Мисс Морской черт) Вяленая икра Мисс Морской черт
    Вяленая икра (Мидия) Вяленая икра мидий
    Вяленая икра (Карп-мутант) Вяленая икра Карпа-мутанта
    Вяленая икра (Осьминог) Вяленая икра осьминога
    Вяленая икра (Устрица) Вяленая икра устриц
    Вяленая икра (Окунь) Вяленая икра окуня
    Вяленая икра (Литорина) Вяленая икра литорин
    Вяленая икра (Щука) Вяленая икра щуки
    Вяленая икра (Иглобрюх) Вяленая икра иглобрюха
    Вяленая икра (Радиоактивный карп) Вяленая икра Радиоактивного карпа
    Вяленая икра (Радужная форель) Вяленая икра радужной форели
    Вяленая икра (Барабулька) Вяленая икра барабульки
    Вяленая икра (Берикс) Вяленая икра берикса
    Вяленая икра (Лосось) Вяленая икра лосося
    Вяленая икра (Песковник) Вяленая икра песковника
    Вяленая икра (Сардина) Вяленая икра сардины
    Вяленая икра (Скорпионовый карп) Вяленая икра скорпионового карпа
    Вяленая икра (Морской огурец) Вяленая икра морского огурца
    Вяленая икра (Морской еж) Вяленая икра морского ежа
    Вяленая икра (Шэд) Вяленая икра шэда
    Вяленая икра (Креветка) Вяленая икра креветок
    Вяленая икра (Слаймджек) Вяленая икра слаймджека
    Вяленая икра (Малоротый окунь) Вяленая икра малоротого окуня
    Вяленая икра (Улитка) Вяленая икра улиток
    Вяленая икра (Малек Багрянника) Вяленая икра Малька Багрянника
    Вяленая икра (Жуть-рыба) Вяленая икра жуть-рыбы
    Вяленая икра (Кальмар) Вяленая икра кальмара
    Вяленая икра (Скат) Вяленая икра ската
    Вяленая икра (Рыба-камень) Вяленая икра рыбы-камня
    Вяленая икра (Солнечник) Вяленая икра солнечника
    Вяленая икра (Чудо-огурец) Вяленая икра чудо-огурца
    Вяленая икра (Тигровая форель) Вяленая икра тигровой форели
    Вяленая икра (Тиляпия) Вяленая икра тиляпии
    Вяленая икра (Тунец) Вяленая икра тунца
    Вяленая икра (Лосось пустоты) Вяленая икра лосося пустоты
    Вяленая икра (Желтый судак) Вяленая икра желтого судака
    Вяленая икра (Лесоплюх) Вяленая икра лесоплюха
    Bait Приманка Наживка
    Basic Retaining Soil Обычная влагосохраняющая почва Обычный аквагрунт
    Deluxe Retaining Soil Влагосохраняющая почва Делюкс Аквагрунт Делюкс
    Dried Fruit (flavored) Сушеная морошка Сушеная малина
    Jelly (flavored) Джем из морошки Малиновый джем
    Juice (flavored) Сок сквоша Кабачковый сок
    Magic Bait Волшебная приманка Волшебная наживка
    Quality Fertilizer Высококачественное удобрение Улучшенное удобрение
    Quality Retaining Soil Высококачественная влагосохраняющая почва Улучшенный аквагрунт
    Quality Sprinkler Высококачественный спринклер Улучшенный спринклер
    Roe (flavored) Икра (Альбакор) Икра альбакора
    Икра (Анчоус) Икра анчоуса
    Икра (Морской черт) Икра Морского черта
    Икра (Рыба-капля) Икра рыбы-капли
    Икра (Голубой дискус) Икра голубого дискуса
    Икра (Лещ) Икра леща
    Икра (Сомик) Икра сомика
    Икра (Карп) Икра карпа
    Икра (Сом) Икра сома
    Икра (Голавль) Икра голавля
    Икра (Гребешок) Икра гребешка
    Икра (Сердцевидка) Икра сердцевидки
    Икра (Краб) Икра краба
    Икра (Рак) Икра рака
    Икра (Багрянник) Икра Багрянника
    Икра (Дорада) Икра дорады
    Икра (Угорь) Икра угря
    Икра (Камбала) Икра камбалы
    Икра (Пятнистый криворот) Икра пятнистого криворота
    Икра (Ледорыб) Икра Ледорыба
    Икра (Ледорыб-младший) Икра Ледорыба-младшего
    Икра (Бычок) Икра бычка
    Икра (Палтус) Икра палтуса
    Икра (Сельдь) Икра сельди
    Икра (Ледопип) Икра ледопипа
    Икра (Большеротый окунь) Икра большеротого окуня
    Икра (Лавовый угорь) Икра лавового угря
    Икра (Легенда) Икра Легенды
    Икра (Легенда II) Икра Легенды II
    Икра (Змеезуб) Икра змеезуба
    Икра (Крылатка) Икра крылатки
    Икра (Омар) Икра омара
    Икра (Полуночный карп) Икра полуночного карпа
    Икра (Ночной кальмар) Икра ночного кальмара
    Икра (Мисс Морской черт) Икра Мисс Морской черт
    Икра (Мидия) Икра мидий
    Икра (Карп-мутант) Икра Карпа-мутанта
    Икра (Осьминог) Икра осьминога
    Икра (Устрица) Икра устриц
    Икра (Окунь) Икра окуня
    Икра (Литорина) Икра литорин
    Икра (Щука) Икра щуки
    Икра (Иглобрюх) Икра иглобрюха
    Икра (Радиоактивный карп) Икра Радиоактивного карпа
    Икра (Радужная форель) Икра радужной форели
    Икра (Барабулька) Икра барабульки
    Икра (Берикс) Икра берикса
    Икра (Лосось) Икра лосося
    Икра (Песковник) Икра песковника
    Икра (Сардина) Икра сардины
    Икра (Скорпионовый карп) Икра скорпионового карпа
    Икра (Морской огурец) Икра морского огурца
    Икра (Морской еж) Икра морского ежа
    Икра (Шэд) Икра шэда
    Икра (Креветка) Икра креветок
    Икра (Слаймджек) Икра слаймджека
    Икра (Малоротый окунь) Икра малоротого окуня
    Икра (Улитка) Икра улиток
    Икра (Малек Багрянника) Икра Малька Багрянника
    Икра (Жуть-рыба) Икра жуть-рыбы
    Икра (Кальмар) Икра кальмара
    Икра (Скат) Икра ската
    Икра (Рыба-камень) Икра рыбы-камня
    Икра (Осетр) Икра осетра
    Икра (Солнечник) Икра солнечника
    Икра (Чудо-огурец) Икра чудо-огурца
    Икра (Тигровая форель) Икра тигровой форели
    Икра (Тиляпия) Икра тиляпии
    Икра (Тунец) Икра тунца
    Икра (Лосось пустоты) Икра лосося пустоты
    Икра (Желтый судак) Икра желтого судака
    Икра (Лесоплюх) Икра лесоплюха
    Salmonberry Морошка Малина
    Smoked Fish (flavored) Копченый {1} Копчен. {1}
    (This is the default neutral prefix. All vanilla fish are
    overridden to use the previous name.)
    Summer Squash Seeds Семена сквоша Семена кабачка
    Summer Squash Сквош Кабачок
    Targeted Bait Наживка: Альбакор Наживка на альбакора
    Наживка: Анчоус Наживка на анчоуса
    Наживка: Морской черт Наживка на Морского черта
    Наживка: Рыба-капля Наживка на рыбу-каплю
    Наживка: Голубой дискус Наживка на голубого дискуса
    Наживка: Лещ Наживка на леща
    Наживка: Сомик Наживка на сомика
    Наживка: Карп Наживка на карпа
    Наживка: Сом Наживка на сома
    Наживка: Голавль Наживка на голавля
    Наживка: Гребешок Приманка для гребешков
    Наживка: Сердцевидка Приманка для сердцевидок
    Наживка: Краб Приманка для крабов
    Наживка: Рак Приманка для раков
    Наживка: Багрянник Наживка на Багрянника
    Наживка: Дорада Наживка на дораду
    Наживка: Угорь Наживка на угря
    Наживка: Камбала Наживка на камбалу
    Наживка: Пятнистый криворот Наживка на пятнистого криворота
    Наживка: Ледорыб Наживка на Ледорыба
    Наживка: Ледорыб-младший Наживка на Ледорыба-младшего
    Наживка: Бычок Наживка на бычка
    Наживка: Палтус Наживка на палтуса
    Наживка: Сельдь Наживка на сельдь
    Наживка: Ледопип Наживка на ледопипа
    Наживка: Большеротый окунь Наживка на большеротого окуня
    Наживка: Лавовый угорь Наживка на лавового угря
    Наживка: Легенда Наживка на Легенду
    Наживка: Легенда II Наживка на Легенду II
    Наживка: Змеезуб Наживка на змеезуба
    Наживка: Крылатка Наживка на крылатку
    Наживка: Омар Приманка для омаров
    Наживка: Полуночный карп Наживка на полуночного карпа
    Наживка: Ночной кальмар Наживка на ночного кальмара
    Наживка: Мисс Морской черт Наживка на Мисс Морской черт
    Наживка: Мидия Приманка для мидий
    Наживка: Карп-мутант Наживка на Карпа-мутанта
    Наживка: Осьминог Наживка на осьминога
    Наживка: Устрица Приманка для устриц
    Наживка: Окунь Наживка на окуня
    Наживка: Литорина Приманка для литорин
    Наживка: Щука Наживка на щуку
    Наживка: Иглобрюх Наживка на иглобрюха
    Наживка: Радиоактивный карп Наживка на Радиоактивного карпа
    Наживка: Радужная форель Наживка на радужную форель
    Наживка: Барабулька Наживка на барабульку
    Наживка: Берикс Наживка на берикса
    Наживка: Лосось Наживка на лосося
    Наживка: Песковник Наживка на песковника
    Наживка: Сардина Наживка на сардину
    Наживка: Скорпионовый карп Наживка на скорпионового карпа
    Наживка: Морской огурец Наживка на морского огурца
    Наживка: Шэд Наживка на шэда
    Наживка: Креветка Приманка для креветок
    Наживка: Слаймджек Наживка на слаймджека
    Наживка: Малоротый окунь Наживка на малоротого окуня
    Наживка: Улитка Приманка для улиток
    Наживка: Малек Багрянника Наживка на Малька Багрянника
    Наживка: Жуть-рыба Наживка на жуть-рыбу
    Наживка: Кальмар Наживка на кальмара
    Наживка: Скат Наживка на ската
    Наживка: Рыба-камень Наживка на рыбу-камень
    Наживка: Осетр Наживка на осетра
    Наживка: Солнечник Наживка на солнечника
    Наживка: Чудо-огурец Наживка на чудо-огурца
    Наживка: Тигровая форель Наживка на тигровую форель
    Наживка: Тиляпия Наживка на тиляпию
    Наживка: Тунец Наживка на тунца
    Наживка: Лосось пустоты Наживка на лосося пустоты
    Наживка: Желтый судак Наживка на желтого судака
    Наживка: Лесоплюх Наживка на лесоплюха
    Wine (flavored) Вино из морошки Малиновое вино

    Furniture

    Hungarian
    item old name new name
    Artist Bookcase Művészi könyvespolc Művészi könyvszekrény
    Birch Double Bed Birs dupla ágy Nyírfa dupla ágy
    Birch Lamp End Table Nyírfa lámpás éjjeliszekrény Nyírfa éjjeliszekrény lámpával
    China Cabinet Kínai vitrin Porcelános vitrin
    Coffee Table Kávésasztal Kávézó asztal
    Dark Bookcase Sötét könyvespolc Sötét könyvszekrény
    Gray Joja Bookcase Szürke Joja könyvespolc Szürke Joja könyvszekrény
    Gray Joja Coffee Table Szürke Joja kávésasztal Szürke Joja kávézó asztal
    Joja Bookcase Joja könyvespolc Joja könyvszekrény
    Joja Coffee Table Joja kávésasztal Joja kávézó asztal
    Junimo Bookcase Junimo könyvespolc Junimo könyvszekrény
    Large Wizard Bookcase Nagy varázsló könyvespolc Nagy varázsló könyvszekrény
    Luxury Bookcase Luxus könyvespolc Luxus könyvszekrény
    Mahogany Lamp End Table Mahagóni lámpás éjjeliszekrény Mahagóni éjjeliszekrény lámpával
    Modern Bookcase Modern könyvespolc Modern könyvszekrény
    Oak Lamp End Table Tölgyfa lámpás éjjeliszekrény Tölgyfa éjjeliszekrény lámpával
    Retro Bookcase Retro könyvespolc Retro könyvszekrény
    Short Bookcase Kicsi könyvespolc Kicsi könyvszekrény
    Short Wizard Bookcase Alacsony varázsló könyvespolc Alacsony varázsló könyvszekrény
    Small Wizard Bookcase Kicsi varázsló könyvespolc Kicsi varázsló könyvszekrény
    Spirits Table Italosasztal Italos asztal
    Walnut Lamp End Table Diófa lámpás éjjeliszekrény Diófa éjjeliszekrény lámpával
    Wizard Bookcase Varázsló könyvespolc Varázsló könyvszekrény
    Russian
    item old name new name
    Corn Plant Кукуруза Драцена
    Pierre's Sign Знак Пьера Вывеска Пьера

    Hats

    French
    item old name new name
    Good Ol' Cap Veille casquette Vieille casquette
    Russian
    item old name new name
    Blobfish Mask Маска рыбы-пузыря Маска рыбы-капли
    Bluebird Mask Маска сиалии Маска синей птицы
    Cowgal Hat Шляпа девушки-ковбоя Женская ковбойская шляпа
    Deluxe Pirate Hat Элитная пиратская шляпа Роскошная пиратская шляпа
    Dinosaur Hat Шляпа-динозавр Шапка динозавра
    Official Cap Кепка от униформы Фуражка
    Panda Hat Шляпка Панды Шапка панды
    Party Hat Шляпа тусовщика Праздничный колпак
    Santa Hat Шляпа Санты Шапка Санты
    Star Helmet Звездный шлем Шапка со звездами
    Sunglasses Солнечные очки Солнцезащитные очки
    Tiger Hat Тигриная шляпа Тигриная шапка

    Pants

    Russian
    item old name new name
    Dinosaur Pants Динозавровы штаны Динозавровые штаны

    Shirts

    Hungarian
    item old name new name
    Goodnight Shirt Jóéjt póló Jó éjt póló

    Tools

    Hungarian
    item old name new name
    Advanced Iridium Rod Fejlett irídium horgászbot Profi irídium horgászbot
    Milk Pail Tejesvödör Tejes vödör

    Weapons

    Hungarian
    item old name new name
    Iridium Needle Irídium tű Irídiumtű
    Iridium Scythe Irídium kasza Irídiumkasza
    Russian
    item old name new name
    Abby's Planchette Дощечка Эбби Спиритическая планшетка Эбби
    Dark Sword Темный Меч Темный клинок
    Dragontooth Club Драконозубья дубинка Дубина из драконьего зуба
    Dragontooth Cutlass Драконозубья сабля Сабля из драконьего зуба
    Dragontooth Shiv Драконозубья заточка Заточка из драконьего зуба
    Dwarf Dagger Кинжал Дварфов Дварфийский кинжал
    Dwarf Hammer Молот Дварфов Дварфийский молот
    Dwarf Sword Меч Дварфов Дварфийский меч
    Insect Head Жучья Голова Жучиная голова
    Leah's Whittler Точилка Леи Резец Леи
    Seb's Lost Mace Потерянная палица Себа Потерянная булава Себа
    Wind Spire Башня Ветров Пика ветров

    Monsters

    Hungarian
    monster old name new name
    Truffle Crab Kőrák Szarvasgombarák

    XNB impact

    Overview

    This section provides a summary of the XNB files which changed in Stardew Valley 1.6.16. This doesn't include new files (since they won't impact existing mods), text changes in non-English files, or the switch from \ to / in asset names (since that's backwards compatible).

    XNB mods are disproportionately affected, since...

    1. they replace the entire file;
    2. they're loaded through the MonoGame content pipeline which is less tolerant of format changes;
    3. they don't benefit from the compatibility rewrites Content Patcher provides for its content packs.

    Content Patcher packs are typically unaffected (and Content Patcher will try to rewrite content packs automatically). However if a content pack replaces an entire asset instead of editing, it's more likely to be affected like an XNB mod.

    Changed assets

    Compatibility is broadly grouped into four categories:

    • "✘ broken": mods will remove new content or significant changes, or the mod's intended changes will no longer work. Effects may range from display bugs to crashes, depending how the game uses that specific content.
    • "✘ will remove changes": mods will remove minor changes in 1.6.16 (e.g. typo fixes).
    • "✓ mostly unaffected": mods will only be affected if they edit specific entries or fields.
    • Blank: no expected impact for the vast majority of mods.
    content asset changes in 1.6.16 compatibility for pre-1.6.16 mods
    XNB mods Content Patcher packs
    Characters/Dialogue/Abigail
    Characters/Dialogue/Alex
    Characters/Dialogue/Emily
    Characters/Dialogue/Haley
    Characters/Dialogue/Harvey
    Removed unused event dialogues.
    Characters/Dialogue/LeoMainland Added missing AcceptGift_(TR)ParrotEgg dialogue key (copied from Characters/Dialogue/Leo). ✘ will remove changes
    Characters/Dialogue/Lewis Added missing $h portrait in summer_Town_57_40 dialogue. ✘ will remove changes
    Characters/Dialogue/Marnie Fixed a capitalization typo. ✘ will remove changes
    Characters/Dialogue/MarriageDialogue Removed some redundant dialogues. ✘ will remove changes
    Characters/Dialogue/Penny Removed unused event dialogues.
    Characters/Dialogue/Sam Merged or removed event dialogue keys. ✘ broken ✓ mostly unaffected
    Characters/Dialogue/Sebastian
    Characters/Dialogue/Shane
    Removed unused event dialogues.
    Data/Buildings
    Data/Characters
    Added new item spawn fields. ✘ broken
    Data/CookingRecipes Changed some recipe keys. ✘ broken ✓ mostly unaffected
    Data/Events/AnimalShop
    Data/Events/ArchaeologyHouse
    Replaced removeQuest commands with completeQuest. ✘ broken ✓ mostly unaffected
    Data/Events/Beach
    • Replaced awardFestivalPrize commands with addItem.
    • Replaced removeQuest commands with completeQuest.
    ✘ broken ✓ mostly unaffected
    Data/Events/Farm
    Data/Events/FarmHouse
    Replaced awardFestivalPrize commands with addItem. ✘ will remove changes ✓ mostly unaffected
    Data/Events/Forest
    • Replaced awardFestivalPrize commands with addItem.
    • Fixed event commands with invalid arguments.
    ✘ will remove changes ✓ mostly unaffected
    Data/Events/HaleyHouse
    Data/Events/Hospital
    Fixed event commands with invalid arguments. ✘ will remove changes ✓ mostly unaffected
    Data/Events/IslandHut Quoted "???" names for consistency.
    Data/Events/IslandSouth Fixed event commands with invalid arguments. In 1.6.16: ✘ will remove changes
    In 1.7: ✘ broken
    1.7 will add a new skippable argument.
    ✓ mostly unaffected
    Data/Events/JoshHouse ✘ broken ✓ mostly unaffected
    Data/Events/Mine Replaced awardFestivalPrize commands with addItem. ✘ will remove changes ✓ mostly unaffected
    Data/Events/Mountain
    • Replaced awardFestivalPrize commands with addItem.
    • Fixed event commands with invalid arguments.
    ✘ will remove changes ✓ mostly unaffected
    Data/Events/Saloon Fixed event commands with invalid arguments. ✘ will remove changes ✓ mostly unaffected
    Data/Events/SamHouse
    • Replaced removeQuest commands with completeQuest.
    • Updated for merged Characters/Dialogue/Sam:Event_band[1|2|3|4] dialogues.
    ✘ broken ✓ mostly unaffected
    Data/Events/Town
    • Replaced awardFestivalPrize commands with addItem.
    • Replaced removeQuest commands with completeQuest.
    • Fixed event commands with invalid arguments.
    ✘ broken ✓ mostly unaffected
    Data/Events/Woods Replaced removeQuest commands with completeQuest. ✘ broken ✓ mostly unaffected
    Data/ExtraDialogue ✘ broken ✓ mostly unaffected
    Data/FarmAnimals Removed UseFlippedRightForLeft for dinosaur. ✘ broken ✓ mostly unaffected
    Data/FishPondData
    Data/FruitTrees
    Added new item spawn fields. ✘ broken
    Data/Furniture ✘ broken ✓ mostly unaffected
    Data/GarbageCans
    Data/GiantCrops
    Added new item spawn fields. ✘ broken
    Data/LocationContexts Fixed non-deterministic weather conditions. ✘ will remove fixes ✓ mostly unaffected
    Data/Locations ✘ broken ✓ mostly unaffected
    Data/LostItemsShop Added new field to data model. ✘ broken
    Data/Machines
    Data/Movies
    Added new item spawn fields. ✘ broken
    Data/Objects ✘ broken ✓ mostly unaffected
    Data/PassiveFestivals ✘ broken ✓ mostly unaffected
    Data/Pets Added new item spawn fields. ✘ broken
    Data/Quests Removed unused quests 10 ("Copper Ore") and 131 ("Willy's Challenge").
    Data/Shops ✘ will remove fixes ✓ mostly unaffected
    Data/SpecialOrders Added new field to data model. ✘ broken
    Data/Tools ✘ broken
    Data/Weapons ✘ broken ✓ mostly unaffected
    Data/WildTrees Added new item spawn fields. ✘ broken
    Data/Weddings
    • Fixed Lewis skipping his matrimonial dialogue at the farmer's wedding.
    • Quoted translation keys for consistency.
    ✘ will remove changes ✓ mostly unaffected
    Strings/1_6_Strings Replaced awardFestivalPrize commands with addItem. ✘ will remove changes ✓ mostly unaffected
    Strings/Locations
    • Replaced removeQuest commands with completeQuest.
    • Quoted "???" names for consistency.
    ✘ broken ✓ mostly unaffected
    Strings/MovieReactions Removed unused translations.
    Strings/StringsFromCSFiles
    Strings/Tools Removed unused translations.
    Strings/UI Merged male/female variants of translation keys. ✘ broken ✓ mostly unaffected

    Removed unused assets

    Stardew Valley 1.6.16 deletes assets which weren't used by the game. Mods usually aren't affected by this.

    • Maps/Bus(people)
    • Maps/busPeople
    • Maps/Island_Secret

    Removed or moved translation keys

    These translation keys were moved or removed in 1.6.16. (For changes to the content, see changed assets above.)

    asset key changes
    Characters/Dialogue/Abigail Event_Tragic_1
    Event_Tragic_2
    Event_Tragic_3
    Event_VideoGame_No
    Event_VideoGame_Yes
    Removed (unused).
    Characters/Dialogue/Alex Event_beach1
    Event_beach2
    Event_parents1
    Event_parents2
    Event_parents3
    Removed (unused).
    Characters/Dialogue/Emily event_dance3 Removed (unused).
    Characters/Dialogue/Haley Event_darkroom4
    Event_darkroom5
    Event_darkroom6
    Event_room1
    Event_room2
    Event_room3
    Removed (unused).
    Characters/Dialogue/Harvey event_grave1
    event_grave2
    Removed (unused).
    Characters/Dialogue/MarriageDialogue Indoor_Day_Abigail
    Indoor_Day_Krobus
    Rainy_Day_Abigail
    Rainy_Day_Krobus
    Removed (unused duplicates of keys in Characters/Dialogue/MarriageDialogue<npc>).
    Characters/Dialogue/Penny event_family1
    event_family2
    event_family3
    Removed (unused).
    Characters/Dialogue/Sam event_room1
    event_room2
    Thu_3
    Removed (unused).
    Event_band1
    Event_band2
    Event_band3
    Merged into single Event_band translation.
    Characters/Dialogue/Sebastian Event_cave1
    Event_cave2
    Event_cave3
    Event_game1
    Event_game2
    fall_Fri_bad
    fall_Fri_good
    Removed (unused).
    Characters/Dialogue/Shane event_noLoan1
    event_noLoan2
    event_noLoan3
    event_room1
    event_room2
    Removed (unused).
    Data/ExtraDialogue Spouse_MonstersInHouse Removed; replaced by Characters/Dialogue/Default:Spouse_MonstersInHouse.
    Strings/MovieReactions Penny_seen_dislike_BeforeMovie
    Penny_seen_like_BeforeMovie
    Penny_seen_love_BeforeMovie
    Removed (unused).
    Strings/StringsFromCSFiles DiaryEvent.cs.6658
    DiaryEvent.cs.6660
    DiaryEvent.cs.6664
    DiaryEvent.cs.6667
    DiaryEvent.cs.6669
    DiaryEvent.cs.6670
    Event.cs.1257
    Event.cs.1258
    Event.cs.1259
    Event.cs.1260
    QuestionEvent.cs.6692
    Raft.cs.14204
    Raft.cs.14205
    Removed (unused).
    Event.cs.1736
    Event.cs.1738
    Removed; replaced by Characters/Dialogue/Default:AskedToDance_*.
    NPC.cs.3985 Removed; moved to Characters/Dialogue/Default:SpouseGiftJealous.
    NPC.cs.3990 Removed; moved to Characters/Dialogue/Krobus:FirstMeeting.
    NPC.cs.4001 Removed; moved to Characters/Dialogue/Default:SpouseStardrop.
    NPC.cs.4507
    NPC.cs.4508
    NPC.cs.4509
    NPC.cs.4510
    NPC.cs.4511
    NPC.cs.4512
    NPC.cs.4513
    NPC.cs.4514
    NPC.cs.4515
    NPC.cs.4516
    NPC.cs.4517
    NPC.cs.4518
    NPC.cs.4519
    NPC.cs.4522
    NPC.cs.4523
    Removed; replaced by Characters/Dialogue/Default:TermsOfEndearment_*.
    Strings/Tools Lantern_Description
    Lantern_Name
    Removed (unused).
    Strings/UI PondQuery_StatusRequestPending_Rude0_Female
    PondQuery_StatusRequestPending_Rude0_Male
    PondQuery_StatusRequestPending_Rude1_Female
    PondQuery_StatusRequestPending_Rude1_Male
    PondQuery_StatusRequestPending_Rude2_Female
    PondQuery_StatusRequestPending_Rude2_Male
    Merged into new keys without gender suffix (e.g. PondQuery_StatusRequestPending_Rude0).