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?
Stardew Valley 1.6.16 makes significant changes to event data, but otherwise so far 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.
Some potential impacts:
- The event changes may affect mods which edit vanilla events or add pre-1.6 events with numeric IDs. Content packs for Content Patcher should be mostly unaffected, since it will rewrite older content packs automatically where possible.
- Mods which use Harmony or reflection to hook deeply into game internals are fragile, and may break unexpectedly in any game update. However there are no particular changes in 1.6.16 expected to affect such mods more than usual.
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.
Data asset changes
Data/Boots
This has been overhauled into a data model asset, with translations moved into a new Strings/Boots asset. This also includes new fields like ContextTags and CustomFields which weren't available in the old format.
The data asset now consists of a string → model lookup, where...
- The key is the unqualified item ID.
- The value is a model with the fields listed below.
| field | effect |
|---|---|
| basic info | |
| Name | The internal item name (not shown in-game). |
| DisplayName Description |
A tokenizable string for the item's in-game display name and description. |
| 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. |
| equipment effects | |
| AddDefense AddImmunity |
(Optional) A bonus applied to the player's defense or immunity stats when the boots are equipped. Default 0. |
| appearance | |
| Texture | The asset name for the texture containing the boots sprite. Defaults to Maps/springobjects if omitted, but should always be specified for custom boots. |
| SpriteIndex | (Optional) The sprite's index within the Texture, where 0 is the top-left sprite. Default 0. |
| ColorTexture | (Optional) The asset name for the texture containing the boots color sprite. Defaults to Characters/Farmer/shoeColors if omitted. |
| ColorSpriteIndex | (Optional) The color sprite's index within the ColorTexture, where 0 is the top-left sprite. Default 0. |
| appearance | |
| CustomFields | (Optional) The custom fields for this entry. |
For example, here's how to add new boots in 1.6.16:
{
"Format": "2.8.0",
"Changes": [
// add data
{
"Action": "EditData",
"Target": "Data/Boots",
"Entries": {
"{{ModId}}_FancyBoots": {
"Name": "{{ModId}}_FancyBoots",
"DisplayName": "{{i18n: fancy-boots.name}}",
"Description": "{{i18n: fancy-boots.description}}",
"Texture": "Mods/{{ModId}}/Boots",
"SpriteIndex": 0,
"ColorSpriteIndex": 1
}
}
},
// add texture
{
"Action": "Load",
"Target": "Mods/{{ModId}}/Boots",
"FromFile": "assets/boots.png"
}
]
}
Data/ChairTiles
- Fixed support for tilesheet asset names containing a dot. (For example, a tileseet asset named
ExampleAuthor.ModName_Tilesheetnow correctly uses that as the data key instead ofExampleAuthor.)
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/Events/*
See event changes below.
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/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.
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). |
Debug command changes
Improved existing commands:
| command | description |
|---|---|
| jump | Fixed error if the NPC doesn't exist. |
| perfection | Fixed error when run on a save which already has some requirements partly met. |
Event changes
Multilingual events
All vanilla events are now multilingual, with a single copy of each event script which uses translation keys. Translations from the old per-language event files were moved into a per-language Strings/Events file.
For example:
| files in 1.6.15 | files in 1.6.16 |
|---|---|
Data/Events/Beach Data/Events/Beach.de-DE Data/Events/Beach.es-ES Data/Events/Beach.fr-FR Data/Events/Beach.hu-HU Data/Events/Beach.it-IT Data/Events/Beach.ja-JP Data/Events/Beach.ko-KR Data/Events/Beach.pt-BR Data/Events/Beach.ru-RU Data/Events/Beach.tr-TR Data/Events/Beach.zh-CN |
Data/Events/Beach |
Content Patcher content packs should generally be unaffected, since their edits were applied to the active version of the file automatically (which will just become the base file in all languages).
In rare cases, a mod which directly targets a specific localized asset name like Data/Events/Beach.fr-FR may no longer work or break vanilla events (depending on how it edits them). That should be a very rare case, since the APIs for both Content Patcher and SMAPI were designed to discourage doing that.
Forking deprecated
All vanilla events which used forking now use goto labels instead.
Forking still works like before for backwards compatibility, but mod events should prefer goto labels since...
- they work more consistently and intuitively with other features like skip labels;
- it's the approach that the game will be applying and developing in future versions;
- deprecated commands will be reported as an error if you use the EventValidator;
- and there's no guarantee forking will always work in future versions.
The fork-related event commands are deprecated.
Precondition slash now required for numeric event IDs
In Stardew Valley 1.6.0–15, the behavior of an event key with no / depended on whether the ID was numeric. A numeric event ID like 10040609 was treated as an event with no precondition, while a string event ID like PlayerKilled was treated as a manual script. In 1.6.16+, the behavior is now consistent: any event ID without a slash (like 10040609) is treated as a manual script, and any with a slash (like 10040609/) is treated as an event.
In other words:
| event key format | behavior in 1.6.15 | → | behavior in 1.6.16 |
|---|---|---|---|
<id>
|
event if numeric, else manual script | → | manual script |
<id>/[preconditions]
|
event | → | event |
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). | ||||||||
choose <question> [<answer> <go to label>]+
|
Show a dialogue box to choose from a list of responses, then optionally skip to a label based on the selected answer.
Arguments:
For example, here's a simple choice which doesn't affect anything: choose "Do you like apples?" "I love them." _ "I hate them." _/ Or you can change the course of the event based on the choice: speak Abigail "Do you... like me?$l"/ choose "" "Yes!" happy "No." heartbroken/ label heartbroken/ speak Abigail "Oh. I understand.$s"/ faceDirection Abigail left/ pause 3000/ end/ label happy/ speak Abigail "We should explore the mines together next time!$h"/ ... | ||||||||
conditionSpeak <npc> [<dialogue> [condition]]+
|
Make an NPC say a dialogue based on arbitrary conditions. The first dialogue with a matching dialogue is spoken; if none match, the command is skipped.
Arguments:
For example, here Maru says a different line if the player suggested she tell the truth: conditionSpeak Maru "I accidentally dropped one of the samples... I'm so sorry.$s" "ANSWERED 38" "@ came in and slammed the door so loud I dropped this sample.$u" | ||||||||
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: .../ label question/ choose Abigail "Hey! Did you have your eye on someone?" "Abigail" correct "Penny" wrong "Alex" wrong/ label wrong/ 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. |
Improved existing commands
| command | description |
|---|---|
| gainSkill | Added argument validation. |
| skippable | Added an optional [skip to label] argument. If set, the event will jump to that label when the player clicks the skip button (see goto for more info). The last skippable command run before the player skips is applied.
This is meant to clean up or grant unlocks before the event ends. For example: skippable beforeEnd/ .../ label beforeEnd/ gainSkill Fishing 1/ addItem (T)TrainingRod/ 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. |
| splitSpeak | You should now specify each dialogue as a separate argument (though the old syntax will still work):
// in 1.6.15 splitSpeak Sam "You think so?~Yeah... kids should play and have fun while they still have the chance." // in 1.6.16 splitSpeak Sam "You think so?" "Yeah... kids should play and have fun while they still have the chance." This also now works with the new choose command too. |
| spriteText | The [text] argument can now be a translation key to get the text from.
|
Deprecated commands
These event commands are deprecated. They still work just like before (except the ones at the bottom of the table), but if you use the EventValidator it'll report them as an error.
| event command | migration |
|---|---|
| fork resetVariable switchEvent |
Use the choose or goto commands instead. If you used dialogue containing the %fork token, it should be removed and replaced with equivalent event commands. |
| question forkX | Use the choose command instead, and replace the event fork with a label.
For example, this script: // main event question fork1 "#I believe in you!#Wow, you're really arrogant."/ fork arrogant/ speak Alex "Thanks, @. I'll remember that."/ ... // 'arrogant' event emote Alex 12/ speak Alex "Hmmph... I think someone's a little jealous.$a"/ Becomes this script: choose "" "I believe in you!" believe "Wow, you're really arrogant." arrogant/ label believe/ speak Alex "Thanks, @. I'll remember that."/ ... label arrogant/ emote Alex 12/ speak Alex "Hmmph... I think someone's a little jealous.$a"/ ... Forks often duplicated the end of the script. In that case, you can have both variants just goto the common ending instead. |
| question null | Use choose with _ labels instead. (Setting a label argument to _ means it'll just continue to the next command instead.)
For example, this command: question null "But what am I going to say to Vincent?#It's best to be honest with kids.#You did the right thing. Kids should have hope."/ Would become this command: choose "But what am I going to say to Vincent?" "It's best to be honest with kids." _ "You did the right thing. Kids should have hope." _/ |
| quickQuestion | Use the choose command instead. The <question> and <answerX> have matching choose arguments, while the <answerX script> arguments become labels.
For example, this command: quickQuestion #I'd like to help#Nah, I'll pass...(break)emote Willy 32\speak Willy "Aye... I thought you would.$h#$b#I'll leave this door unlocked for ya... you can come drop off the materials whenever you like."(break)emote Willy 28\speak Willy "Alright, suit yourself...$s#$b#If you have a change of heart, you can always come back and help out. I'll leave this door unlocked, anyhow."/ Becomes this script: choose "" "I'd like to help" accept "Nah, I'll pass..." refuse/ label accept/ emote Willy 32/ speak Willy "Aye... I thought you would.$h#$b#I'll leave this door unlocked for ya... you can come drop off the materials whenever you like."/ goto resume/ label refuse/ emote Willy 28/ speak Willy "Alright, suit yourself...$s#$b#If you have a change of heart, you can always come back and help out. I'll leave this door unlocked, anyhow."/ label resume/ |
| cutscene bandfork elliottBookTalk question haleyDarkRoom question shaneCliffs question shaneLoan |
These commands are deleted and will no longer work. They're unlikely to be used by mod events, but see their relevant events for the new equivalents if needed. |
Changed event keys
Events were generally unified and de-hardcoded in 1.6.16. In particular...
- Several events were previously defined in the game's C# code, where they couldn't be changed by content packs. Most of these were moved into Data/Events/* with translations in Strings/Events:
event new asset name new event ID forest raccoon finished event Data/Events/Forest RaccoonFinish forest trash bear cleanup Data/Events/Forest 777111 island Gourmand crop inspection Data/Events/islandFarmCave GourmandInspection summit perfection cutscene Data/Events/Summit SummitPerfection summit cheat event Data/Events/Summit SummitCheat - Others were moved from non-event data into Data/Events/*:
event old location new asset new event ID Birdie quest intro & completed Strings/Locations:IslandSecret_Event_BirdieIntro
Strings/Locations:IslandSecret_Event_BirdieFinished
Strings/Locations:alreadyGotNutsData/Events/IslandWest -888999 (intro)
-666777 (completed)field office intro & completed Strings/Locations:IslandFieldOffice_Intro_Event
Strings/Locations:FieldOfficeFinaleData/Events/IslandFieldOffice FieldOfficeIntro
FieldOfficeDoneLeo intro Strings/Locations:IslandHut_Event_ParrotBoyIntro Data/Events/IslandHut LeoIntro Meowmere event Strings/1_6_Strings:ForestPylonEvent Data/Events/WizardHouseBasement ForestPylon Mr. Qi Skull Cavern level 100 Data/ExtraDialogue:SkullCavern_100_event
Data/ExtraDialogue:SkullCavern_100_event_honorableData/Events/SkullCave SkullCavern100 Professor Snail exits cave Strings/Locations:IslandNorth_Event_SafariManAppear Data/Events/IslandNorth ProfSnailIntro - Other event keys were changed or merged as part of the other event changes:
asset entry key change in 1.6.16 Data/Events/AbandonedJojaMart missingBundleCompleteEvent key changed to 192393to match the event ID.Data/Events/Farm 992559/t 600 1130/n clothFound/o Emily/w sunny992559/t 600 1130/n clothFound/O Emily/w sunnyMerged into a single 992559/Time 600 1130/LocalMail clothFound/Weather sunnyevent.Data/Events/QiNutRoom 10040609Event key changed to 10040609/per the precondition change.Data/Events/SamHouse 94/e 93/k 95/t 1800 1950/i 136/y 194/e 93/k 95/t 1800 1950/i 136/y 2Merged into a single 95/SawEvent 93/!SawEvent 94/Time 1800 1950/HasItem 136event.Data/Events/Town 611173/Hn pamHouseUpgrade/o PennyMerged into the existing 611173/Hn pamHouseUpgradeevent.
For events that didn't previously have an event ID, their new IDs will be added to the player's seen-events list automatically if needed when the save is loaded.
Other event changes
- Moved all vanilla events' on-skip behavior into their event scripts (except the pet adoption logic).
New trigger actions
| action | effect |
|---|---|
CompleteQuest <quest ID>
|
Complete all active quests with this ID in the player's journal. |
Other changes
- Added validation for schedule offset command in end-of-route animations.
- 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.
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 (e.g. a default validator checks that goto commands match a valid label).
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). |
| goToLabel | An event label (see the goto and label event commands). This is equivalent to word, but is used by EventValidator to validate label references. |
| 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.
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
- Added event.floorSprites field for temporary animated sprites that should be drawn on the ground (e.g. under NPC shadows).
- 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.
- Fixed
item.CopyFieldsFrom(other)always setting the stack size for the copy to 1. - Fixed
Event.TryGetEventCommandHandlernot loading commands if it's called before any other methods. - Fixed machine auto-load leaving empty slots in chests when taking a secondary ingredient.
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 Bone Mill Csontőrlő Csontdaráló
- Russian
item old name new name Aged Roe (flavored) Вяленая икра (Альбакор) Вяленая икра альбакора Вяленая икра (Анчоус) Вяленая икра анчоуса Вяленая икра (Багрянник) Вяленая икра Багрянника Вяленая икра (Барабулька) Вяленая икра барабульки Вяленая икра (Берикс) Вяленая икра берикса Вяленая икра (Большеротый окунь) Вяленая икра большеротого окуня Вяленая икра (Бычок) Вяленая икра бычка Вяленая икра (Голавль) Вяленая икра голавля Вяленая икра (Голубой дискус) Вяленая икра голубого дискуса Вяленая икра (Гребешок) Вяленая икра гребешка Вяленая икра (Дорада) Вяленая икра дорады Вяленая икра (Желтый судак) Вяленая икра желтого судака Вяленая икра (Жуть-рыба) Вяленая икра жуть-рыбы Вяленая икра (Змеезуб) Вяленая икра змеезуба Вяленая икра (Кальмар) Вяленая икра кальмара Вяленая икра (Камбала) Вяленая икра палтуса Вяленая икра (Карп) Вяленая икра карпа Вяленая икра (Карп-мутант) Вяленая икра Карпа-мутанта Вяленая икра (Краб) Вяленая икра краба Вяленая икра (Креветка) Вяленая икра креветок Вяленая икра (Лавовый угорь) Вяленая икра лавового угря Вяленая икра (Легенда II) Вяленая икра Легенды II Вяленая икра (Легенда) Вяленая икра Легенды Вяленая икра (Ледопип) Вяленая икра ледопипа Вяленая икра (Ледорыб) Вяленая икра Ледорыба Вяленая икра (Ледорыб-младший) Вяленая икра Ледорыба-младшего Вяленая икра (Лесоплюх) Вяленая икра лесоплюха Вяленая икра (Лещ) Вяленая икра леща Вяленая икра (Литорина) Вяленая икра литорин Вяленая икра (Лосось пустоты) Вяленая икра лосося пустоты Вяленая икра (Лосось) Вяленая икра лосося Вяленая икра (Малек Багрянника) Вяленая икра Малька Багрянника Вяленая икра (Малоротый окунь) Вяленая икра малоротого окуня Вяленая икра (Мелкая камбала) Вяленая икра камбалы Вяленая икра (Мидия) Вяленая икра мидий Вяленая икра (Мисс Морской черт) Вяленая икра Мисс Морской черт Вяленая икра (Морской ёрш) Вяленая икра крылатки Вяленая икра (Морской еж) Вяленая икра морского ежа Вяленая икра (Морской огурец) Вяленая икра морского огурца Вяленая икра (Морской черт) Вяленая икра Морского черта Вяленая икра (Ночной кальмар) Вяленая икра ночного кальмара Вяленая икра (Окунь) Вяленая икра окуня Вяленая икра (Омар) Вяленая икра омара Вяленая икра (Осьминог) Вяленая икра осьминога Вяленая икра (Песковник) Вяленая икра песковника Вяленая икра (Полуночный карп) Вяленая икра полуночного карпа Вяленая икра (Пятнистый криворот) Вяленая икра пятнистого криворота Вяленая икра (Радиоактивный карп) Вяленая икра Радиоактивного карпа Вяленая икра (Радужная форель) Вяленая икра радужной форели Вяленая икра (Рак) Вяленая икра рака Вяленая икра (Рыба-еж) Вяленая икра иглобрюха Вяленая икра (Рыба-камень) Вяленая икра рыбы-камня Вяленая икра (Рыба-пузырь) Вяленая икра рыбы-капли Вяленая икра (Сардина) Вяленая икра сардины Вяленая икра (Сельдь) Вяленая икра сельди Вяленая икра (Сердцевидка) Вяленая икра сердцевидки Вяленая икра (Скат) Вяленая икра ската Вяленая икра (Скорпионовый карп) Вяленая икра скорпионового карпа Вяленая икра (Слаймджек) Вяленая икра слаймджека Вяленая икра (Солнечник) Вяленая икра солнечника Вяленая икра (Сом) Вяленая икра сома Вяленая икра (Сомик) Вяленая икра сомика Вяленая икра (Тигровая форель) Вяленая икра тигровой форели Вяленая икра (Тиляпия) Вяленая икра тиляпии Вяленая икра (Тунец) Вяленая икра тунца Вяленая икра (Угорь) Вяленая икра угря Вяленая икра (Улитка) Вяленая икра улиток Вяленая икра (Устрица) Вяленая икра устриц Вяленая икра (Чудо-огурец) Вяленая икра чудо-огурца Вяленая икра (Шэд) Вяленая икра шэда Вяленая икра (Щука) Вяленая икра щуки Bait Приманка Наживка Basic Retaining Soil Обычная влагосохраняющая почва Обычный аквагрунт Blobfish Рыба-пузырь Рыба-капля Blue Slime Egg Синее яйцо слайма Яйцо синего слайма Crispy Bass Окунь с хруст. корочкой Окунь с хрустящей корочкой Deluxe Retaining Soil Влагосохраняющая почва Делюкс Аквагрунт Делюкс Flounder Мелкая камбала Камбала Green Slime Egg Зеленое яйцо слайма Яйцо зеленого слайма Halibut Камбала Палтус Immunity Band Кольцо стойкости Перстень преодоления Iridium Band Иридиевый обод Иридиевый перстень Juice (flavored) Сок сквоша Кабачковый сок Lionfish Морской ёрш Крылатка Magic Bait Волшебная приманка Волшебная наживка Pufferfish Рыба-еж Иглобрюх Purple Slime Egg Фиолетовое яйцо слайма Яйцо фиолетового слайма Qi Bean Семя Ки Боб Ки Quality Fertilizer Высококачественное удобрение Улучшенное удобрение Quality Retaining Soil Высококачественная влагосохраняющая почва Улучшенный аквагрунт Quality Sprinkler Высококачественный спринклер Улучшенный спринклер Red Slime Egg Красное яйцо слайма Яйцо красного слайма Roe (flavored) Икра (Альбакор) Икра альбакора Икра (Анчоус) Икра анчоуса Икра (Багрянник) Икра Багрянника Икра (Барабулька) Икра барабульки Икра (Берикс) Икра берикса Икра (Большеротый окунь) Икра большеротого окуня Икра (Бычок) Икра бычка Икра (Голавль) Икра голавля Икра (Голубой дискус) Икра голубого дискуса Икра (Гребешок) Икра гребешка Икра (Дорада) Икра дорады Икра (Желтый судак) Икра желтого судака Икра (Жуть-рыба) Икра жуть-рыбы Икра (Змеезуб) Икра змеезуба Икра (Кальмар) Икра кальмара Икра (Камбала) Икра палтуса Икра (Карп) Икра карпа Икра (Карп-мутант) Икра Карпа-мутанта Икра (Краб) Икра краба Икра (Креветка) Икра креветок Икра (Лавовый угорь) Икра лавового угря Икра (Легенда II) Икра Легенды II Икра (Легенда) Икра Легенды Икра (Ледопип) Икра ледопипа Икра (Ледорыб) Икра Ледорыба Икра (Ледорыб-младший) Икра Ледорыба-младшего Икра (Лесоплюх) Икра лесоплюха Икра (Лещ) Икра леща Икра (Литорина) Икра литорин Икра (Лосось пустоты) Икра лосося пустоты Икра (Лосось) Икра лосося Икра (Малек Багрянника) Икра Малька Багрянника Икра (Малоротый окунь) Икра малоротого окуня Икра (Мелкая камбала) Икра камбалы Икра (Мидия) Икра мидий Икра (Мисс Морской черт) Икра Мисс Морской черт Икра (Морской ёрш) Икра крылатки Икра (Морской еж) Икра морского ежа Икра (Морской огурец) Икра морского огурца Икра (Морской черт) Икра Морского черта Икра (Ночной кальмар) Икра ночного кальмара Икра (Окунь) Икра окуня Икра (Омар) Икра омара Икра (Осетр) Икра осетра Икра (Осьминог) Икра осьминога Икра (Песковник) Икра песковника Икра (Полуночный карп) Икра полуночного карпа Икра (Пятнистый криворот) Икра пятнистого криворота Икра (Радиоактивный карп) Икра Радиоактивного карпа Икра (Радужная форель) Икра радужной форели Икра (Рак) Икра рака Икра (Рыба-еж) Икра иглобрюха Икра (Рыба-камень) Икра рыбы-камня Икра (Рыба-пузырь) Икра рыбы-капли Икра (Сардина) Икра сардины Икра (Сельдь) Икра сельди Икра (Сердцевидка) Икра сердцевидки Икра (Скат) Икра ската Икра (Скорпионовый карп) Икра скорпионового карпа Икра (Слаймджек) Икра слаймджека Икра (Солнечник) Икра солнечника Икра (Сом) Икра сома Икра (Сомик) Икра сомика Икра (Тигровая форель) Икра тигровой форели Икра (Тиляпия) Икра тиляпии Икра (Тунец) Икра тунца Икра (Угорь) Икра угря Икра (Улитка) Икра улиток Икра (Устрица) Икра устриц Икра (Чудо-огурец) Икра чудо-огурца Икра (Шэд) Икра шэда Икра (Щука) Икра щуки Slime Crate Ящик слайма Ящик для слайма Smoked Fish (flavored) Копченая камбала Копченый палтус Копченая рыба-еж Копченый иглобрюх Копченый морской ёрш Копченая крылатка Summer Squash Seeds Семена сквоша Семена кабачка Summer Squash Сквош Кабачок Targeted Bait Наживка: Альбакор Наживка на альбакора Наживка: Анчоус Наживка на анчоуса Наживка: Багрянник Наживка на Багрянника Наживка: Барабулька Наживка на барабульку Наживка: Берикс Наживка на берикса Наживка: Большеротый окунь Наживка на большеротого окуня Наживка: Бычок Наживка на бычка Наживка: Голавль Наживка на голавля Наживка: Голубой дискус Наживка на голубого дискуса Наживка: Гребешок Приманка для гребешков Наживка: Дорада Наживка на дораду Наживка: Желтый судак Наживка на желтого судака Наживка: Жуть-рыба Наживка на жуть-рыбу Наживка: Змеезуб Наживка на змеезуба Наживка: Кальмар Наживка на кальмара Наживка: Камбала Наживка на палтуса Наживка: Карп Наживка на карпа Наживка: Карп-мутант Наживка на Карпа-мутанта Наживка: Краб Приманка для крабов Наживка: Креветка Приманка для креветок Наживка: Лавовый угорь Наживка на лавового угря Наживка: Легенда Наживка на Легенду Наживка: Легенда II Наживка на Легенду II Наживка: Ледопип Наживка на ледопипа Наживка: Ледорыб Наживка на Ледорыба Наживка: Ледорыб-младший Наживка на Ледорыба-младшего Наживка: Лесоплюх Наживка на лесоплюха Наживка: Лещ Наживка на леща Наживка: Литорина Приманка для литорин Наживка: Лосось Наживка на лосося Наживка: Лосось пустоты Наживка на лосося пустоты Наживка: Малек Багрянника Наживка на Малька Багрянника Наживка: Малоротый окунь Наживка на малоротого окуня Наживка: Мелкая камбала Наживка на камбалу Наживка: Мидия Приманка для мидий Наживка: Мисс Морской черт Наживка на Мисс Морской черт Наживка: Морской ёрш Наживка на крылатку Наживка: Морской огурец Наживка на морского огурца Наживка: Морской черт Наживка на Морского черта Наживка: Ночной кальмар Наживка на ночного кальмара Наживка: Окунь Наживка на окуня Наживка: Омар Приманка для омаров Наживка: Осетр Наживка на осетра Наживка: Осьминог Наживка на осьминога Наживка: Песковник Наживка на песковника Наживка: Полуночный карп Наживка на полуночного карпа Наживка: Пятнистый криворот Наживка на пятнистого криворота Наживка: Радиоактивный карп Наживка на Радиоактивного карпа Наживка: Радужная форель Наживка на радужную форель Наживка: Рак Приманка для раков Наживка: Рыба-еж Наживка на иглобрюха Наживка: Рыба-камень Наживка на рыбу-камень Наживка: Рыба-пузырь Наживка на рыбу-каплю Наживка: Сардина Наживка на сардину Наживка: Сельдь Наживка на сельдь Наживка: Сердцевидка Приманка для сердцевидок Наживка: Скат Наживка на ската Наживка: Скорпионовый карп Наживка на скорпионового карпа Наживка: Слаймджек Наживка на слаймджека Наживка: Солнечник Наживка на солнечника Наживка: Сом Наживка на сома Наживка: Сомик Наживка на сомика Наживка: Тигровая форель Наживка на тигровую форель Наживка: Тиляпия Наживка на тиляпию Наживка: Тунец Наживка на тунца Наживка: Угорь Наживка на угря Наживка: Улитка Приманка для улиток Наживка: Устрица Приманка для устриц Наживка: Чудо-огурец Наживка на чудо-огурец Наживка: Шэд Наживка на шэда Наживка: Щука Наживка на щуку
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
- 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 Динозавровы штаны Динозавровые штаны
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
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), or text changes in non-English files.
XNB mods are disproportionately affected, since...
- they replace the entire file;
- they're loaded through the MonoGame content pipeline which is less tolerant of format changes;
- 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 replace the entire asset, or 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/* | Removed now-unneeded %fork tokens. | ||
| Data/Events/* Data/Events/Festivals/* |
|
✓ mostly unaffected | ✘ broken |
| Data/ExtraDialogues | Replaced SummitEvent_* translations with Strings/Events entries (which have a different name & format). | ||
| Data/Objects | Added new context tags. | ✘ broken | |
| Data/Weddings | Fixed Lewis skipping his matrimonial dialogue at the farmer's wedding. | ✓ mostly unaffected | ✘ will remove fix |
| Strings/Events | Added the translations for multilingual events. | ✘ broken | |
| Strings/1_6_Strings | In ForestPylonEvent, see Data/Events changes. | ✓ mostly unaffected | ✘ will remove changes |
| Strings/Locations | In the island events, see Data/Events changes. | ✓ mostly unaffected | ✘ will remove changes |
| Strings/UI | Merged male/female variants of PondQuery_StatusRequestPending_* entries. | ✓ mostly unaffected | ✘ broken |