Modding:Migrate to Stardew Valley 1.7
This page is for mod authors. Players: see the mod compatibility list instead.
This page describes changes accumulated in the game's pre-alpha development branch. There's no estimated release date or even assigned version number for these changes yet. Things will change before it's released!
This page helps mod authors prepare their mods for the next game version (tentatively Stardew Valley 1.6.16), and documents some of the changes and new functionality.
FAQs

What's changing?
So far, Stardew Valley 1.6.16 only has small changes for mods following the major 1.6 and 1.6.9 updates.
Is this the modapocalypse?
No, the current impact on mods is expected to be minimal. A few mods which use Harmony or reflection to hook deeply into game internals might be affected by any game update, but otherwise no change in mod compatibility is expected.
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:
-
- Update for Stardew Valley 1.6.9 if you haven't already.
- Rebuild the solution.
- Fix any build errors and review any build warnings. You can search this page and previous migration guides for relevant info as needed.
- 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.) - Test to make sure the mod works.
- Skim through this page, and check any section that might be relevant to the mod.
- For Content Patcher packs:
-
- Update for Stardew Valley 1.6.9 if you haven't already.
- 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.
Changes for all mod authors
New context tags
| context tag | effect |
|---|---|
| fish_skip_minigame | 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). |
New event commands
| command | description | ||||||
|---|---|---|---|---|---|---|---|
goto [<target> [condition]]+
|
Skip forward or backward to a specific position in the event script. Each <target> can be:
You can list any number of label/condition pairs, and it will go to the first label with a matching condition. If a condition is omitted, it defaults to always true. If none of the conditions match, it continues to the next command normally. For example, this event script uses goto to repeat a question until a specific answer is selected: "
continue/64 15/farmer 64 16 2 Abigail 64 18 0/pause 1500/
label question/speak Abigail \"Hey! Did you have your eye on someone?\"/quickQuestion #Abigail.#Penny.#Alex.(break)goto correct(break)goto hmm(break)goto hmm/
label hmm/speak Abigail \"Oh?$u\"/pause 500/goto question/
label correct/speak Abigail \"I thought so!$l\"/pause 500/end
"
You can make goto conditional using game state queries. For example, this will go to the divorced label if you divorced Abigail, and continue to the next command if not: " .../ goto divorced \"PLAYER_NPC_RELATIONSHIP Current Abigail Divorced\"/ " | ||||||
label <label>
|
Set a named position in the event script, which you can go to using the goto command.
Note: you can't use end as a label name, since that automatically matches the end event command. | ||||||
setSkipGoTo [label]
|
Set a label to jump to when the player clicks the skip button (see goto for more info). When the player skips, the last setSkipGoTo command before that point is applied.
This is typically used to perform cleanup when the event ends. For example: ".../setSkipGoTo beforeEnd/.../label beforeEnd/removeTemporarySprites/addItem (BC)62/end" Technically you can jump to any point in the event (e.g. to cancel the skip). However, the skip action will still cancel any ongoing event behavior like ongoing player/NPC movements, so you should be careful doing this. |
Lost items shop changes
In 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.
Other changes
- Fixed FarmHouseFurniture map property only allowing numeric item IDs.
- Fixed crash when loading a save with missing building interiors.
- Fixed intermittent crash when an item delivery quest for a non-Wizard NPC requests a cooking-type item.
- Fixed RejectItem_* dialogue disabling the NPC's normal dialogue after it's shown.
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.
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.)
These class members changed in 1.6.16:
| type | member | migration |
|---|---|---|
| FishingRod | lastCatchWasJunk | Renamed to lastCatchSkippedMinigame to more accurately convey what it does. |
Other changes
- Fixed
item.CopyFieldsFrom(other)always setting the stack size for the copy to 1.
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).
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 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 Joja Bookcase Joja könyvespolc Joja könyvszekrény 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 Modern Bookcase Modern könyvespolc Modern könyvszekrény 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 Wizard Bookcase Varázsló könyvespolc Varázsló könyvszekrény
- Russian
item old name new name Pierre's Sign Знак Пьера Вывеска Пьера
Hats
- Russian
item old name new name Blobfish Mask Маска рыбы-пузыря Маска рыбы-капли
Weapons
- Russian
item old name new name 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