Modding:Migrate to Stardew Valley 1.6.16: Difference between revisions
imported>Pathoschild Pathoschild moved page Modding:Migrate to Stardew Valley 1.6.16 to Modding:Migrate to Stardew Valley 1.7: update title for public reveal |
imported>Pathoschild split from Modding:Migrate to Stardew Valley 1.7 for changes backported into 1.6.16 patch (main author: Pathoschild; fixed typo in 'Schedule changes' by EnderTedi; fixed links in 'EventValidator' and 'Game state query changes' by VulpesLucida) |
||
| Line 1: | Line 1: | ||
# | ←[[Modding:Index|Index]] | ||
{{Modder compatibility header}} | |||
{{upcoming|1.6.16|message='''This is a potential patch before the [https://x.com/ConcernedApe/status/1961864959484412104 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 <!--{{version|1.6.16|Stardew Valley 1.6.16}}-->Stardew Valley 1.6.16, and documents some of the changes and new functionality. | |||
{{TOC|limit=3}} | |||
==FAQs== | |||
[[File:SMAPI compatibility.png|thumb|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: | |||
:# [[Modding:Migrate to Stardew Valley 1.6.9#How to update your mod|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 [[Modding:Index#Migration guides|previous migration guides]] for relevant info as needed. | |||
:# Increment your mod version in <samp>manifest.json</samp>.<br /><small>(Some mods may be added to SMAPI's compatibility blacklist due to runtime errors. Incrementing the mod version will fix that if so.)</small> | |||
:# Test to make sure the mod works. | |||
:# Skim through this page, and check any section that might be relevant to the mod. | |||
; For [[Modding:Content Patcher|Content Patcher]] packs: | |||
:# [[Modding:Migrate to Stardew Valley 1.6.9#How to update your mod|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== | |||
===[[Modding:Maps#Sitting on non-furniture chairs|<samp>Data/ChairTiles</samp>]]=== | |||
* Fixed support for tilesheet asset names containing a dot. (For example, a tileseet asset named <code>ExampleAuthor.ModName_Tilesheet</code> now correctly uses that as the data key instead of <code>ExampleAuthor</code>.) | |||
===[[Modding:Recipe data|<samp>Data/CookingRecipes</samp>]]=== | |||
These cooking recipe keys were changed to match their object name (like all the other recipes): | |||
{| class="wikitable" | |||
|- | |||
! 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. | |||
===[[Modding:Lost items shop|<samp>Data/LostItemsShop</samp>]]=== | |||
Added one new field: | |||
{| class="wikitable" | |||
|- | |||
! field | |||
! effect | |||
|- | |||
| <samp>RequireCondition</samp> | |||
| ''(Optional)'' The [[Modding:Game state queries|game state queries]] which must match to add this item. The <samp>Target</samp> 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: <samp>RequireMailReceived</samp>, then <samp>RequireEventSeen</samp>, then <samp>RequireCondition</samp>. | |||
===[[Modding:Passive Festival data|<samp>Data/PassiveFestivals</samp>]]=== | |||
Added one new field: | |||
{| class="wikitable" | |||
|- | |||
! field | |||
! effect | |||
|- | |||
| <samp>InLocations</samp> | |||
| ''(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 <samp>MapReplacements</samp>. | |||
|} | |||
===[[Modding:Special orders|<samp>Data/SpecialOrders</samp>]]=== | |||
<ul> | |||
<li>Added one new field: | |||
{| class="wikitable" | |||
|- | |||
! field | |||
! effect | |||
|- | |||
| <samp>CanBeCancelled</samp> | |||
| ''(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: | |||
{| class="wikitable" | |||
|- | |||
! field | |||
! effect | |||
|- | |||
| <samp>Duration</samp> | |||
| This can now be set to <samp>"Indefinite"</samp> for a special order with no expiry. It will remain active until it's completed or cancelled. Consider enabling <samp>CanBeCancelled</samp> if applicable. | |||
|} | |||
</ul> | |||
===[[Modding:Tools|<samp>Data/Tools</samp>]]=== | |||
Added one field: | |||
{| class="wikitable" | |||
|- | |||
! field | |||
! effect | |||
|- | |||
| <samp>ContextTags</samp> | |||
| ''(Optional)'' The custom [[Modding:Context tags|context tags]] to add for this item (in addition to the tags added automatically based on the other item data), specified as an array. | |||
|} | |||
===[[Modding:Weapons|<samp>Data/Weapons</samp>]]=== | |||
Added one field: | |||
{| class="wikitable" | |||
|- | |||
! field | |||
! effect | |||
|- | |||
| <samp>ContextTags</samp> | |||
| ''(Optional)'' The custom [[Modding:Context tags|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== | |||
===[[Modding:Context tags|Context tag]] changes=== | |||
Added new context tags: | |||
{| class="wikitable" | |||
|- | |||
! context tag | |||
! item types | |||
! effect | |||
|- | |||
| <samp>axe</samp><br /><samp>error_tool</samp><br /><samp>fishing_rod</samp><br /><samp>generic_tool</samp><br /><samp>hoe</samp><br /><samp>lantern</samp><br /><samp>melee_weapon</samp><br /><samp>milk_pail</samp><br /><samp>pan</samp><br /><samp>pickaxe</samp><br /><samp>raft</samp><br /><samp>shears</samp><br /><samp>slingshot</samp><br />[[Return Scepter|<samp>wand</samp>]]<br /><samp>watering_can</samp> | |||
| [[Modding:Tools|tools]] and [[Modding:Weapons|weapons]] | |||
| The C# type which implements the tool or melee weapon. | |||
Note that the vanilla scythes are <samp>melee_weapon</samp>. See also the <samp>is_scythe</samp> context tag below. | |||
|- | |||
| <samp>fish_skip_minigame</samp> | |||
| ''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). | |||
|- | |||
| <samp>ignore_gift_limits</samp> | |||
| ''any giftable item'' | |||
| Whether this item ignores the gift limits when given as a gift (similar to [[Stardrop Tea|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. | |||
|- | |||
| <samp>is_scythe</samp> | |||
| [[Modding:Tools|tools]] and [[Modding:Weapons|weapons]] | |||
| Marks the tool as a [[scythe]]. This is set for vanilla scythes through <samp>Data/Weapons</samp>. | |||
|- | |||
| <samp>spawns_butterflies</samp> | |||
| [[Modding:Furniture|furniture]] | |||
| Whether butterflies spawn around this furniture, similar to the [[Butterfly Hutch|butterfly hutch]]. | |||
|- | |||
| <samp>upgrade_level_*</samp> | |||
| [[Modding:Tools|tools]] and [[Modding:Weapons|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 <samp>upgrade_level_0</samp> (base axe) and <samp>upgrade_level_1</samp> (copper axe). | |||
|} | |||
===[[Modding:Console commands|Debug command]] changes=== | |||
Improved existing commands: | |||
{| class="wikitable" | |||
|- | |||
! command | |||
! description | |||
|- | |||
| <samp>jump</samp> | |||
| Fixed error if the NPC doesn't exist. | |||
|- | |||
| <samp>perfection</samp> | |||
| Fixed error when run on a save which already has some requirements partly met. | |||
|} | |||
===[[Modding:Dialogue|Dialogue]] changes=== | |||
<ul> | |||
<li>Added new dialogue keys: | |||
{| class="wikitable" | |||
|- | |||
! key | |||
! description | |||
|- | |||
| ''passive festival dialogue'' | |||
| Identical to [[Modding:Dialogue#Location dialogue|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. | |||
|}</li> | |||
<li>Fixed <samp>{{t|location}}_{{t|x}}_{{t|y}}</samp> and <samp>{{t|location}}_{{t|dayOfWeek}}</samp> dialogue keys never used in 1.6.0+ if a player has at least two hearts with the NPC.</li> | |||
<li>Fixed [[Modding:Dialogue#Location dialogue|location dialogues]] not recognizing the <samp>spring</samp> prefix (they only allowed <samp>summer</samp>, <samp>fall</samp>, and <samp>winter</samp>).</li> | |||
<li>Fixed <samp>$r</samp> response IDs not tracked correctly if you reuse an NPC reaction key across multiple <samp>$r</samp> options.</li> | |||
</ul> | |||
===[[Modding:Event data|Event]] changes=== | |||
====New event commands==== | |||
{| class="wikitable" | |||
|- | |||
! command | |||
! description | |||
|- | |||
| <samp>addAchievement {{t|achievement ID}}</samp> | |||
| Unlock an [[achievement]] for the current player. The {{t|achievement ID}} can be a [[Modding:Console commands#Statistics and achievements|platform achievement ID]] (like <samp>Achievement_LocalLegend</samp>) or internal ID (like <samp>17</samp> for Gourmet Chef). | |||
|- | |||
| <samp>addActor {{t|x}} {{t|y}} {{t|direction}}</samp> | |||
| Add a character or player to the event. This is mostly equivalent to adding them through the [[Modding:Event data#Basic format|character positions field]], but can be done at any point in the script (e.g. for use with <samp>goto</samp> for event variations). | |||
|- | |||
| <samp>completeQuest {{t|id}}</samp> | |||
| Mark a quest complete. If the quest has no reward to collect, this also removes it from the in-game journal. | |||
|} | |||
====Improved existing commands==== | |||
{| class="wikitable" | |||
|- | |||
! command | |||
! description | |||
|- | |||
| <samp>gainSkill</samp> | |||
| Added argument validation. | |||
|- | |||
| <samp>skippable</samp> | |||
| Added an optional {{o|skip to label}} argument. If set, the event will jump to that label when the player clicks the skip button (see <samp>goto</samp> for more info). The last <samp>skippable</samp> command run before the player skips is applied. | |||
This is meant to clean up or grant unlocks before the event ends. For example: | |||
<pre> | |||
skippable beforeEnd/ | |||
.../ | |||
label beforeEnd/ | |||
gainSkill Fishing 1/ | |||
addItem (T)TrainingRod/ | |||
end | |||
</pre> | |||
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. | |||
|- | |||
| <samp>spriteText</samp> | |||
| The {{o|text}} argument can now be a [[Modding:Common data field types#Translation key|translation key]] to get the text from. | |||
|} | |||
===[[Modding:Fish ponds|Fish pond]] changes=== | |||
* Fixed the translation key suffix from a custom <samp>fish_talk_*</samp> [[Modding:Context tags|context tag]] being capitalized differently from the vanilla suffixes. (For example, <samp>fish_talk_some_example</samp> would incorrectly result in a <samp>someExample</samp> suffix instead of <samp>someExample</samp>.) | |||
===[[Modding:Game state queries|Game state query]] changes=== | |||
Added new game state queries: | |||
{| class="wikitable" | |||
|- | |||
! Condition | |||
! effect | |||
|- | |||
| <samp>IS_DEBRIS_WEATHER</samp><br /><samp>IS_GREEN_RAINING</samp><br /><samp>IS_LIGHTNING</samp><br /><samp>IS_RAINING</samp><br /><samp>IS_SNOWING</samp> | |||
| Whether the weather in the [[Modding:Game state queries#Target location|given location]] sets the related [[Modding:Weather data#Save files|weather field]]. For example, <samp>IS_RAINING</samp> is true for the <samp>Rain</samp>, <samp>GreenRain</samp>, and <samp>Storm</samp> weathers. | |||
|- | |||
| <samp>LOCATION_MINE_DIFFICULTY {{t|location}} {{t|min}} {{o|max}}</samp> | |||
| Whether the [[Modding:Game state queries#Target location|given location]] is in the [[The Mines|mines]] or [[Skull Cavern]], and its difficulty level is between {{t|min}} and {{o|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. | |||
|- | |||
| <samp>LOCATION_MINE_LEVEL {{t|location}} {{t|min}} {{o|max}}</samp> | |||
| Whether the [[Modding:Game state queries#Target location|given location]] is in the [[The Mines|mines]] or [[Skull Cavern]], and its floor level is between {{t|min}} and {{o|max}} (default unlimited) inclusively. The Skull Cavern implicitly starts at level 121 (e.g. Skull Cavern level 10 is mine level 130). | |||
|- | |||
| <samp>PLAYER_HAS_PREVIOUS_CONVERSATION_TOPIC {{t|player}} {{t|id}}+</samp> | |||
| Whether the [[Modding:Game state queries#Target player|specified player(s)]] have previously had ''any'' of the specified [[Modding:Dialogue#Conversation topics|conversation topics]] active. This doesn't include current topics (unless they're a repeat of a previous one). | |||
|- | |||
| <samp>PLAYER_QUEST_ACTIVE {{t|player}} {{t|id}}+</samp><br /><samp>PLAYER_QUEST_COMPLETE {{t|player}} {{t|id}}+</samp> | |||
| Whether the [[Modding:Game state queries#Target player|specified player(s)]] have ''any'' of the specified quest IDs open (<samp>PLAYER_QUEST_ACTIVE</samp>) or previously completed (<samp>PLAYER_QUEST_COMPLETE</samp>). | |||
|} | |||
===[[Modding:Item queries#Item spawn fields|Item spawn field]] changes=== | |||
<ul> | |||
<li>Added new item spawn fields: | |||
{| class="wikitable" | |||
|- | |||
! field | |||
! effect | |||
|- | |||
| <samp>Color</samp> | |||
| ''(Optional)'' For item types that support it (e.g. objects and clothes), a [[Modding:Common data field types#Color|tint color]] to apply to the produced item. Default none. | |||
|- | |||
| <samp>IsSpecial</samp> | |||
| ''(Optional)'' Whether to mark the produced item as a special permanent item, which can't be destroyed or dropped. Default false. | |||
|- | |||
| <samp>ObjectIsQuestItem</samp> | |||
| ''(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. | |||
|- | |||
| <samp>TempData</samp> | |||
| ''(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: | |||
<syntaxhighlight lang="js"> | |||
"TempData": { | |||
"SomeExampleKey": "Example Value" | |||
} | |||
</syntaxhighlight> | |||
A C# code can then check for the field on the dropped items: | |||
<syntaxhighlight lang="c#"> | |||
if (item.TryGetTempData("SomeExampleKey", out object value)) | |||
...; | |||
</syntaxhighlight> | |||
|} | |||
</li> | |||
<li>The <samp>ObjectColor</samp> field is obsolete and replaced by <samp>Color</samp>. Content packs which set it will still work (since the game will pass the value through to <samp>Color</samp> automatically). | |||
</ul> | |||
===[[Modding:Maps|Map property]] changes=== | |||
<ul> | |||
<li>Added new map properties: | |||
{| class="wikitable" | |||
|- | |||
! action | |||
! effect | |||
|- | |||
| <samp>FarmHouseBed {{t|x}} {{t|y}} {{o|item ID}}</samp><br />''(valid in farm or farmhouse)'' | |||
| Sets the initial bed to place when creating the farmhouse or cabin. The arguments are: | |||
* {{t|x}} {{t|y}}: the [[Modding:Maps#Tile coordinates|tile position]] at which to place it. | |||
* {{o|item ID}}: if set, the qualified or unqualified [[Modding:Common data field types#Item ID|item ID]] for the bed furniture to place. This must match a [[Modding:Furniture|furniture item]] with item type <samp>Bed</samp>. Defaults to <code>(F)2048</code> ([[Single Bed|single bed]]). | |||
If omitted, a [[Single Bed|single bed]] is placed at position (9, 8). | |||
|}</li> | |||
<li>Improved map properties: | |||
{| class="wikitable" | |||
|- | |||
! action | |||
! changes | |||
|- | |||
| <samp>FarmHouseFlooring</samp><br /><samp>FarmHouseFurniture</samp><br /><samp>FarmHouseStarterGift</samp><br /><samp>FarmHouseStarterSeedsPosition</samp><br /><samp>FarmHouseWallpaper</samp> | |||
| Can now be set on the farmhouse map to override the farm map's equivalent property. | |||
|- | |||
| <samp>FarmHouseFurniture</samp> | |||
| Fixed property only allowing numeric item IDs. | |||
|}</li> | |||
</ul> | |||
===[[Modding:Quest data|Quest]] changes=== | |||
* The game now tracks completed quest IDs. You can check them using [[#Game state query changes|new game state queries]] or in C# via <code>Game1.player.questsCompleted</code>. The list is retroactively populated for pre-existing saves. | |||
* Added [[#Game state query changes|<samp>PLAYER_QUEST_ACTIVE</samp> and <samp>PLAYER_QUEST_COMPLETE</samp> game state queries]]. | |||
* Added [[#New event commands|<samp>completeQuest</samp> event command]] and [[#Trigger action changes|<samp>CompleteQuest</samp> trigger action]]. | |||
* Added <samp>QuestIds</samp> constants for C# mods. | |||
* Added [[#Item spawn field changes|item spawn field to produce quest items]]. | |||
* Fixed intermittent crash when an item delivery quest for a non-Wizard NPC requests a cooking-type item. | |||
===[[Modding:Schedule data|Schedule]] changes=== | |||
<ul> | |||
<li>Added new schedule keys: | |||
{| class="wikitable" | |||
|- | |||
! syntax | |||
! summary | |||
|- | |||
| <samp>roommate_{{t|festival ID}}_{{t|festival day}}</samp><br /><samp>roommate_{{t|festival ID}}</samp><br /><samp>roommate_{{t|season}}_{{t|day of month}}</samp><br /><samp>roommate_{{t|day of week}}</samp><br /><samp>roommateJob</samp> | |||
| Equivalent to the [[Modding:Schedule data#Marriage schedules|marriage schedules]], but only apply if the NPC is a roommate. | |||
If a roommate NPC has both <samp>roommate*</samp> and <samp>marriage*</samp> schedules, it'll use a <samp>roommate*</samp> schedule if any of them apply. If none apply, it'll default to <samp>marriage*</samp> schedules. You can avoid that by setting the fallback <samp>roommate</samp> schedule key. | |||
|- | |||
| <samp>marriage</samp><br /><samp>roommate</samp> | |||
| 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. | |||
|}</li> | |||
</ul> | |||
===[[Modding:Trigger actions|Trigger action]] changes=== | |||
<ul> | |||
<li>Added new trigger actions: | |||
{| class="wikitable" | |||
|- | |||
! action | |||
! effect | |||
|- | |||
| <samp>CompleteQuest {{t|quest ID}}</samp> | |||
| Complete all active quests with this ID in the player's journal. | |||
|}</li> | |||
</ul> | |||
===Other changes=== | |||
* Added validation for schedule <samp>offset</samp> command in end-of-route animations. | |||
* Fixed crash when loading a save with missing building interiors. | |||
* Fixed <samp>RejectItem_*</samp> dialogue disabling the NPC's normal dialogue after it's shown. | |||
* Fixed [[Modding:NPC data|NPC <samp>FlowerDanceCanDance</samp> field]] ignored for non-datable NPCs with no dialogue. | |||
==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 <code>[InstancedStatic]</code> 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 <code>[InstancedStatic]</code>, it should use SMAPI's built-in [[Modding:Modder Guide/APIs/Utilities#Per-screen data|per-screen data]] utility instead. | |||
===AssetNameUtility=== | |||
The new <samp>AssetNameUtility</samp> class has methods for working with [[Modding:Common data field types#Asset name|asset names]]: | |||
{| class="wikitable" | |||
|- | |||
! method | |||
! usage | |||
|- | |||
| <samp>Normalize</samp> | |||
| A low-level method which normalizes path separators in an [[Modding:Common data field types#Asset name|asset name]]. For example: | |||
<syntaxhighlight lang="c#"> | |||
string assetName = AssetNameUtility.Normalize("Characters/\\/Abigail"); // produces "Characters/Abigail" | |||
</syntaxhighlight> | |||
Consider using SMAPI's <samp>PathUtilities.NormalizeAssetName</samp> instead, which is more thorough. | |||
|- | |||
| <samp>TryParseTranslationKey</samp> | |||
| Parses a [[Modding:Common data field types#Translation key|translation key]] into its component parts. For example: | |||
<syntaxhighlight lang="c#"> | |||
if (AssetNameUtility.TryParseTranslationKey("Strings/UI:Confirm", out string assetName, out string fieldKey, out string error)) | |||
...; // assetName: Strings/UI, fieldKey: Confirm, error: null | |||
</syntaxhighlight> | |||
This doesn't check whether the asset or key exists; see <samp>Game1.content.IsValidTranslationKey</samp> to do that. | |||
|} | |||
===EventValidator=== | |||
====Overview==== | |||
The new <samp>EventValidator</samp> class analyses [[Modding:Event data|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 <samp>EventValidator.CommandValidators</samp> field (which will be used for commands like <samp>goto</samp> in the [[Modding:Migrate to Stardew Valley 1.7|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: | |||
<syntaxhighlight lang="c#"> | |||
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}."); | |||
} | |||
</syntaxhighlight> | |||
====Command argument validation==== | |||
Argument validation is enabled if the command's handler method has an <samp>EventArguments</samp> 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 <samp>showFrame</samp> command is defined like this: | |||
<syntaxhighlight lang="c#"> | |||
[EventArguments("int", "actor int bool?")] | |||
public static void ShowFrame(Event @event, string[] args, EventContext context) | |||
</syntaxhighlight> | |||
An argument pattern consists of space-delimited ''tokens'', where each token defines the format for an argument. For example, <code>actor int bool?</code> has three tokens representing three arguments: an actor name, a positive integer, and an optional boolean. | |||
These are the tokens recognized by the validator: | |||
{| class="wikitable" | |||
|- | |||
! token | |||
! meaning | |||
|- | |||
!colspan="2"| generic argument types | |||
|- | |||
| <samp>bool</samp> | |||
| A boolean value (<samp>true</samp> or <samp>false</samp>). | |||
|- | |||
| <samp>float</samp> | |||
| A positive number with optional decimal point (like <samp>5</samp> or <samp>0.5</samp>). | |||
|- | |||
| <samp>-float</samp> | |||
| A number with optional decimal point and optional negative sign (like <samp>5</samp>, <samp>-5</samp>, or <samp>-0.5</samp>). | |||
|- | |||
| <samp>int</samp> | |||
| A positive integer (like <samp>5</samp>). | |||
|- | |||
| <samp>-int</samp> | |||
| An integer with optional negative sign (like <samp>5</samp> or <samp>-5</samp>). | |||
|- | |||
| <samp>string</samp> | |||
| A quoted sequence of arbitrary text like <samp>"some words here"</samp>. If the argument has no quotes, this is equivalent to the <samp>word</samp> token. | |||
|- | |||
| <samp>word</samp> | |||
| 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. | |||
|- | |||
| <samp>remainder</samp> | |||
| One or more arguments of any type. | |||
|- | |||
!colspan="2"| specific string formats | |||
|- | |||
| <samp>actor</samp> | |||
| An actor name in the event format (like <samp>Abigail</samp> or <samp>Kent?</samp>). | |||
|- | |||
| <samp>assetName</samp> | |||
| An [[Modding:Common data field types#Asset name|asset name]] like <samp>Data/Achievements</samp>. | |||
|- | |||
| <samp>direction</samp> | |||
| A [[Modding:Event data#Directions|direction]] which can be specified as either a number (like <samp>0</samp>) or name (like <samp>up</samp>). | |||
|- | |||
| <samp>itemId</samp> | |||
| An [[Modding:Common data field types#Item ID|item ID]] which can be qualified or unqualified (like <samp>(O)MossySoup</samp> or <samp>MossySoup</samp>). | |||
|- | |||
| <samp>translationKey</samp> | |||
| A [[Modding:Common data field types#Translation key|translation key]] like <samp>Strings/Locations:SomeKey</samp>. | |||
|- | |||
!colspan="2"| custom formats | |||
|- | |||
| <samp>'...'</samp> | |||
| The literal text or regex pattern to match, like <code>'continue'</code> or <code>'[\w-]+'</code>. | |||
|} | |||
In addition, you can extend tokens with these indicators: | |||
* Suffix with <samp>+</samp> for repeating argument of that type. For example, <samp>int+</samp> would allow both <samp>5</samp> and <samp>5 6 7</samp>. | |||
* Suffix with <samp>?</samp> for an optional argument which can be omitted. All tokens after this token must also be optional. (You can have optional repeating arguments like <samp>int+?</samp>.) | |||
* Infix with <samp>|</samp> for a parameter which can be one of multiple types. For example <samp>int|bool</samp> 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 <samp>LanguageCode</samp>, <code>Game1.content</code>, and other content manager fields. This does ''not'' affect mods which only use [[Modding:Modder Guide/APIs/Content|SMAPI's content API]]. | |||
In particular: | |||
<ul> | |||
<li>The game now uses <samp>IContentManager</samp> instead of <samp>LocalizedContentManager</samp> in most places. That includes fields like <code>Game1.content</code>, methods like <code>Game1.content.CreateTemporary()</code>, etc. The new interface also includes full IntelliSense docs.</li> | |||
<li>Moved three types: | |||
{| class="wikitable" | |||
|- | |||
! type | |||
! changes | |||
|- | |||
| <samp>LocalizedContentManager</samp> | |||
| Moved from the <code>StardewValley</code> namespace into <code>StardewValley.ContentManagement</code>. | |||
|- | |||
| <samp>LocalizedContentManager.LanguageCode</samp><br /><samp>LocalizedContentManager.LanguageChangedHandler</samp> | |||
|   | |||
* Moved from the <code>StardewValley</code> namespace into <code>StardewValley.ContentManagement</code>. | |||
* Moved out of the nested type (e.g. change <code>LocalizedContentManager.LanguageCode</code> to just <code>LanguageCode</code> in your mod code). | |||
|}</li> | |||
<li>And changed some <samp>LocalizedContentManager</samp> members: | |||
{| class="wikitable" | |||
|- | |||
! type | |||
! member | |||
! changes | |||
|- | |||
|rowspan="8"| <samp>LocalizedContentManager</samp> | |||
| <samp>CurrentLanguageCode</samp><br /><samp>CurrentLanguageLatin</samp><br /><samp>CurrentLanguageString</samp><br /><samp>CurrentModLanguage</samp><br /><samp>GetDefaultLanguageCode()</samp><br /><samp>OnLanguageChange</samp><br /><samp>SetModLanguage(…)</samp> | |||
| These are no longer static, so they need to be called through an instance like <samp>Game1.content</samp>. For example, change <code>LocalizedContentManager.GetDefaultLanguageCode()</code> in mod code to <code>Game1.content.GetDefaultLanguageCode()</code>. | |||
Some of these are also renamed (see the next rows). | |||
|- | |||
| <samp>CurrentCulture</samp> | |||
| Removed (it was unused). | |||
|- | |||
| <samp>CurrentLanguageCode</samp> | |||
| Renamed to <samp>LanguageCode</samp>. | |||
|- | |||
| <samp>CurrentLanguageLatin</samp> | |||
| Renamed to <samp>LanguageUsesLatinFont</samp>. | |||
|- | |||
| <samp>CurrentLanguageString</samp> | |||
| Renamed to <samp>LanguageString</samp>. | |||
|- | |||
| <samp>CurrentModLanguage</samp> | |||
| Renamed to <samp>LanguageModData</samp>. | |||
|- | |||
| <samp>GetCurrentLanguage()</samp> | |||
| Removed. Use the <samp>LanguageCode</samp> property instead. | |||
|- | |||
| <samp>OnLanguageChange</samp> | |||
| Renamed to <samp>OnGlobalLanguageChanged</samp>. | |||
|}</li> | |||
</ul> | |||
===Item changes=== | |||
* Added <samp>IItemDataDefinition.GetContextTags(itemData)</samp> method, so custom item data definitions can add [[Modding:Context tags|context tags]] from their data if applicable. | |||
* Fixed <code>item.CopyFieldsFrom(other)</code> always setting the stack size for the copy to 1. | |||
===Utility fields & methods=== | |||
<ul> | |||
<li>1.6.16 adds some new utility methods and fields. For example: | |||
{| class="wikitable" | |||
|- | |||
! type | |||
! member | |||
! usage | |||
|- | |||
|rowspan="3"| <samp>PassiveFestivalData</samp> | |||
| <samp>CoversDate(…)</samp> | |||
| Get whether the festival is active on the given date. | |||
|- | |||
| <samp>GetFestivalLocations()</samp> | |||
| Get the locations in which the passive festival happens (based on the <samp>InLocations</samp> or <samp>MapReplacements</samp> fields in [[Modding:Passive Festival data|<samp>Data/PassiveFestivals</samp>]]). | |||
|- | |||
| <samp>TryGetLocationReplacement(…)</samp> | |||
| Get the new location to load instead of a normal one when the passive festival is active. For example, the [[Night Market]] replaces <samp>Beach</samp> with <samp>BeachNightMarket</samp>. | |||
|- | |||
| <samp>Utility</samp> | |||
| <samp>TryGetPassiveFestivalDataForDayHere(…)</samp> | |||
| Get the passive festival which occurs on a given date within the given location, if any. This is equivalent to <samp>Utility.TryGetPassiveFestivalDataForDay(…)</samp>, but also checks the given location against the passive festival's <samp>InLocation</samp> or <samp>MapReplacements</samp> field. | |||
|}</li> | |||
</ul> | |||
===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: | |||
{| class="wikitable" | |||
|- | |||
! type | |||
! migration | |||
|- | |||
| <samp>Events.DiaryEvent</samp> | |||
| Removed. This was unused. | |||
|} | |||
====Other API changes==== | |||
These class members changed in 1.6.16: | |||
{| class="wikitable" | |||
|- | |||
! type | |||
! member | |||
! migration | |||
|- | |||
| <samp>Boots</samp> | |||
| <samp>price</samp> | |||
| Removed. This was never used, since boots prices are calculated dynamically. | |||
|- | |||
|rowspan="2"| <samp>Bush</samp> | |||
| <samp>draw(SpriteBatch batch, int yDrawOffset)</samp> | |||
| Removed. Set the <samp>drawOffset</samp> field and then call <samp>draw(SpriteBatch)</samp> instead. | |||
|- | |||
| <samp>yDrawOffset</samp> | |||
| Replaced by <samp>drawOffset</samp>, which is now public and a <samp>Point</samp>. | |||
|- | |||
| <samp>FishingRod</samp> | |||
| <samp>lastCatchWasJunk</samp> | |||
| Renamed to <samp>lastCatchSkippedMinigame</samp> to more accurately convey what it does. | |||
|- | |||
|rowspan="3"| <samp>NPCDialogueResponse</samp><br /><samp>Response</samp> | |||
| <samp>id</samp><br /><samp>friendshipChange</samp><br /><samp>extraArgument</samp><br /><samp>hotkey</samp><br /><samp>responseText</samp> | |||
| Fields changed to get-only properties. | |||
|- | |||
| <samp>responseKey</samp> | |||
|   | |||
* Field changed to get-only property. | |||
* Previously <samp>NPCDialogueResponse</samp> stored the NPC's reaction dialogue key in this field. You should now use <samp>npcReactionKey</samp> for that instead. | |||
|- | |||
| <samp>SetHotKey(…)</samp> | |||
| Removed. Set the hotkey through the constructor instead. | |||
|} | |||
===Other changes=== | |||
* Added <samp>PlatformAchievementIds</samp> constants. | |||
* Added <samp>event.floorSprites</samp> 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 <samp>Maps/Town</samp> instead of <samp>Maps\Town</samp>). This shouldn't affect most mods, since SMAPI already converted all asset names to forward slashes. | |||
* Removed broken <samp>Lantern</samp> tool, <samp>Raft</samp> tool, and their related logic. | |||
* Fixed <code>Event.TryGetEventCommandHandler</code> 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 <code>'</code> (straight apostrophe) to <code>’</code> (curly) in French, or aren't visible to vanilla players (like mine rocks). | |||
===Objects=== | |||
; Hungarian | |||
: {| class="wikitable" | |||
|- | |||
! 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 | |||
: {| class="wikitable" | |||
|- | |||
! item | |||
! old name | |||
! new name | |||
|- | |||
|rowspan="71" valign="top"| [[Aged Roe]] (flavored) | |||
| ''Вяленая икра (Альбакор)''<!--Albacore--> | |||
| ''Вяленая икра альбакора'' | |||
|- | |||
| ''Вяленая икра (Анчоус)''<!--Anchovy--> | |||
| ''Вяленая икра анчоуса'' | |||
|- | |||
| ''Вяленая икра (Морской черт)''<!--Angler--> | |||
| ''Вяленая икра Морского черта'' | |||
|- | |||
| ''Вяленая икра (Рыба-капля)''<!--Blobfish--> | |||
| ''Вяленая икра рыбы-капли'' | |||
|- | |||
| ''Вяленая икра (Голубой дискус)''<!--Blue Discus--> | |||
| ''Вяленая икра голубого дискуса'' | |||
|- | |||
| ''Вяленая икра (Лещ)''<!--Bream--> | |||
| ''Вяленая икра леща'' | |||
|- | |||
| ''Вяленая икра (Сомик)''<!--Bullhead--> | |||
| ''Вяленая икра сомика'' | |||
|- | |||
| ''Вяленая икра (Карп)''<!--Carp--> | |||
| ''Вяленая икра карпа'' | |||
|- | |||
| ''Вяленая икра (Сом)''<!--Catfish--> | |||
| ''Вяленая икра сома'' | |||
|- | |||
| ''Вяленая икра (Голавль)''<!--Chub--> | |||
| ''Вяленая икра голавля'' | |||
|- | |||
| ''Вяленая икра (Гребешок)''<!--Clam--> | |||
| ''Вяленая икра гребешка'' | |||
|- | |||
| ''Вяленая икра (Сердцевидка)''<!--Cockle--> | |||
| ''Вяленая икра сердцевидки'' | |||
|- | |||
| ''Вяленая икра (Краб)''<!--Crab--> | |||
| ''Вяленая икра краба'' | |||
|- | |||
| ''Вяленая икра (Рак)''<!--Crayfish--> | |||
| ''Вяленая икра рака'' | |||
|- | |||
| ''Вяленая икра (Багрянник)''<!--Crimsonfish--> | |||
| ''Вяленая икра Багрянника'' | |||
|- | |||
| ''Вяленая икра (Дорада)''<!--Dorado--> | |||
| ''Вяленая икра дорады'' | |||
|- | |||
| ''Вяленая икра (Угорь)''<!--Eel--> | |||
| ''Вяленая икра угря'' | |||
|- | |||
| ''Вяленая икра (Камбала)''<!--Flounder--> | |||
| ''Вяленая икра камбалы'' | |||
|- | |||
| ''Вяленая икра (Пятнистый криворот)''<!--Ghostfish--> | |||
| ''Вяленая икра пятнистого криворота'' | |||
|- | |||
| ''Вяленая икра (Ледорыб)''<!--Glacierfish--> | |||
| ''Вяленая икра Ледорыба'' | |||
|- | |||
| ''Вяленая икра (Ледорыб-младший)''<!--Glacierfish Jr.--> | |||
| ''Вяленая икра Ледорыба-младшего'' | |||
|- | |||
| ''Вяленая икра (Бычок)''<!--Goby--> | |||
| ''Вяленая икра бычка'' | |||
|- | |||
| ''Вяленая икра (Палтус)''<!--Halibut--> | |||
| ''Вяленая икра палтуса'' | |||
|- | |||
| ''Вяленая икра (Сельдь)''<!--Herring--> | |||
| ''Вяленая икра сельди'' | |||
|- | |||
| ''Вяленая икра (Ледопип)''<!--Ice Pip--> | |||
| ''Вяленая икра ледопипа'' | |||
|- | |||
| ''Вяленая икра (Большеротый окунь)''<!--Largemouth Bass--> | |||
| ''Вяленая икра большеротого окуня'' | |||
|- | |||
| ''Вяленая икра (Лавовый угорь)''<!--Lava Eel--> | |||
| ''Вяленая икра лавового угря'' | |||
|- | |||
| ''Вяленая икра (Легенда)''<!--Legend--> | |||
| ''Вяленая икра Легенды'' | |||
|- | |||
| ''Вяленая икра (Легенда II)''<!--Legend II--> | |||
| ''Вяленая икра Легенды II'' | |||
|- | |||
| ''Вяленая икра (Змеезуб)''<!--Lingcod--> | |||
| ''Вяленая икра змеезуба'' | |||
|- | |||
| ''Вяленая икра (Крылатка)''<!--Lionfish--> | |||
| ''Вяленая икра крылатки'' | |||
|- | |||
| ''Вяленая икра (Омар)''<!--Lobster--> | |||
| ''Вяленая икра омара'' | |||
|- | |||
| ''Вяленая икра (Полуночный карп)''<!--Midnight Carp--> | |||
| ''Вяленая икра полуночного карпа'' | |||
|- | |||
| ''Вяленая икра (Ночной кальмар)''<!--Midnight Squid--> | |||
| ''Вяленая икра ночного кальмара'' | |||
|- | |||
| ''Вяленая икра (Мисс Морской черт)''<!--Ms. Angler--> | |||
| ''Вяленая икра Мисс Морской черт'' | |||
|- | |||
| ''Вяленая икра (Мидия)''<!--Mussel--> | |||
| ''Вяленая икра мидий'' | |||
|- | |||
| ''Вяленая икра (Карп-мутант)''<!--Mutant Carp--> | |||
| ''Вяленая икра Карпа-мутанта'' | |||
|- | |||
| ''Вяленая икра (Осьминог)''<!--Octopus--> | |||
| ''Вяленая икра осьминога'' | |||
|- | |||
| ''Вяленая икра (Устрица)''<!--Oyster--> | |||
| ''Вяленая икра устриц'' | |||
|- | |||
| ''Вяленая икра (Окунь)''<!--Perch--> | |||
| ''Вяленая икра окуня'' | |||
|- | |||
| ''Вяленая икра (Литорина)''<!--Periwinkle--> | |||
| ''Вяленая икра литорин'' | |||
|- | |||
| ''Вяленая икра (Щука)''<!--Pike--> | |||
| ''Вяленая икра щуки'' | |||
|- | |||
| ''Вяленая икра (Иглобрюх)''<!--Pufferfish--> | |||
| ''Вяленая икра иглобрюха'' | |||
|- | |||
| ''Вяленая икра (Радиоактивный карп)''<!--Radioactive Carp--> | |||
| ''Вяленая икра Радиоактивного карпа'' | |||
|- | |||
| ''Вяленая икра (Радужная форель)''<!--Rainbow Trout--> | |||
| ''Вяленая икра радужной форели'' | |||
|- | |||
| ''Вяленая икра (Барабулька)''<!--Red Mullet--> | |||
| ''Вяленая икра барабульки'' | |||
|- | |||
| ''Вяленая икра (Берикс)''<!--Red Snapper--> | |||
| ''Вяленая икра берикса'' | |||
|- | |||
| ''Вяленая икра (Лосось)''<!--Salmon--> | |||
| ''Вяленая икра лосося'' | |||
|- | |||
| ''Вяленая икра (Песковник)''<!--Sandfish--> | |||
| ''Вяленая икра песковника'' | |||
|- | |||
| ''Вяленая икра (Сардина)''<!--Sardine--> | |||
| ''Вяленая икра сардины'' | |||
|- | |||
| ''Вяленая икра (Скорпионовый карп)''<!--Scorpion Carp--> | |||
| ''Вяленая икра скорпионового карпа'' | |||
|- | |||
| ''Вяленая икра (Морской огурец)''<!--Sea Cucumber--> | |||
| ''Вяленая икра морского огурца'' | |||
|- | |||
| ''Вяленая икра (Морской еж)''<!--Sea Urchin--> | |||
| ''Вяленая икра морского ежа'' | |||
|- | |||
| ''Вяленая икра (Шэд)''<!--Shad--> | |||
| ''Вяленая икра шэда'' | |||
|- | |||
| ''Вяленая икра (Креветка)''<!--Shrimp--> | |||
| ''Вяленая икра креветок'' | |||
|- | |||
| ''Вяленая икра (Слаймджек)''<!--Slimejack--> | |||
| ''Вяленая икра слаймджека'' | |||
|- | |||
| ''Вяленая икра (Малоротый окунь)''<!--Smallmouth Bass--> | |||
| ''Вяленая икра малоротого окуня'' | |||
|- | |||
| ''Вяленая икра (Улитка)''<!--Snail--> | |||
| ''Вяленая икра улиток'' | |||
|- | |||
| ''Вяленая икра (Малек Багрянника)''<!--Son of Crimsonfish--> | |||
| ''Вяленая икра Малька Багрянника'' | |||
|- | |||
| ''Вяленая икра (Жуть-рыба)''<!--Spook Fish--> | |||
| ''Вяленая икра жуть-рыбы'' | |||
|- | |||
| ''Вяленая икра (Кальмар)''<!--Squid--> | |||
| ''Вяленая икра кальмара'' | |||
|- | |||
| ''Вяленая икра (Скат)''<!--Stingray--> | |||
| ''Вяленая икра ската'' | |||
|- | |||
| ''Вяленая икра (Рыба-камень)''<!--Stonefish--> | |||
| ''Вяленая икра рыбы-камня'' | |||
|- | |||
| ''Вяленая икра (Солнечник)''<!--Sunfish--> | |||
| ''Вяленая икра солнечника'' | |||
|- | |||
| ''Вяленая икра (Чудо-огурец)''<!--Super Cucumber--> | |||
| ''Вяленая икра чудо-огурца'' | |||
|- | |||
| ''Вяленая икра (Тигровая форель)''<!--Tiger Trout--> | |||
| ''Вяленая икра тигровой форели'' | |||
|- | |||
| ''Вяленая икра (Тиляпия)''<!--Tilapia--> | |||
| ''Вяленая икра тиляпии'' | |||
|- | |||
| ''Вяленая икра (Тунец)''<!--Tuna--> | |||
| ''Вяленая икра тунца'' | |||
|- | |||
| ''Вяленая икра (Лосось пустоты)''<!--Void Salmon--> | |||
| ''Вяленая икра лосося пустоты'' | |||
|- | |||
| ''Вяленая икра (Желтый судак)''<!--Walleye--> | |||
| ''Вяленая икра желтого судака'' | |||
|- | |||
| ''Вяленая икра (Лесоплюх)''<!--Woodskip--> | |||
| ''Вяленая икра лесоплюха'' | |||
|- | |||
| [[Bait]] | |||
| ''Приманка'' | |||
| ''Наживка'' | |||
|- | |||
| [[Basic Retaining Soil]] | |||
| ''Обычная влагосохраняющая почва'' | |||
| ''Обычный аквагрунт'' | |||
|- | |||
| [[Deluxe Retaining Soil]] | |||
| ''Влагосохраняющая почва Делюкс'' | |||
| ''Аквагрунт Делюкс'' | |||
|- | |||
| [[Dried Fruit]] (flavored) | |||
| ''Сушеная морошка''<!--Salmonberry--> | |||
| ''Сушеная малина'' | |||
|- | |||
| [[Jellies and Pickles|Jelly]] (flavored) | |||
| ''Джем из морошки''<!--Salmonberry--> | |||
| ''Малиновый джем'' | |||
|- | |||
| [[Juice]] (flavored) | |||
| ''Сок сквоша''<!--Summer Squash--> | |||
| ''Кабачковый сок'' | |||
|- | |||
| [[Magic Bait]] | |||
| ''Волшебная приманка'' | |||
| ''Волшебная наживка'' | |||
|- | |||
| [[Quality Fertilizer]] | |||
| ''Высококачественное удобрение'' | |||
| ''Улучшенное удобрение'' | |||
|- | |||
| [[Quality Retaining Soil]] | |||
| ''Высококачественная влагосохраняющая почва'' | |||
| ''Улучшенный аквагрунт'' | |||
|- | |||
| [[Quality Sprinkler]] | |||
| ''Высококачественный спринклер'' | |||
| ''Улучшенный спринклер'' | |||
|- | |||
|rowspan="72" valign="top"| [[Roe]] (flavored) | |||
| ''Икра (Альбакор)''<!--Albacore--> | |||
| ''Икра альбакора'' | |||
|- | |||
| ''Икра (Анчоус)''<!--Anchovy--> | |||
| ''Икра анчоуса'' | |||
|- | |||
| ''Икра (Морской черт)''<!--Angler--> | |||
| ''Икра Морского черта'' | |||
|- | |||
| ''Икра (Рыба-капля)''<!--Blobfish--> | |||
| ''Икра рыбы-капли'' | |||
|- | |||
| ''Икра (Голубой дискус)''<!--Blue Discus--> | |||
| ''Икра голубого дискуса'' | |||
|- | |||
| ''Икра (Лещ)''<!--Bream--> | |||
| ''Икра леща'' | |||
|- | |||
| ''Икра (Сомик)''<!--Bullhead--> | |||
| ''Икра сомика'' | |||
|- | |||
| ''Икра (Карп)''<!--Carp--> | |||
| ''Икра карпа'' | |||
|- | |||
| ''Икра (Сом)''<!--Catfish--> | |||
| ''Икра сома'' | |||
|- | |||
| ''Икра (Голавль)''<!--Chub--> | |||
| ''Икра голавля'' | |||
|- | |||
| ''Икра (Гребешок)''<!--Clam--> | |||
| ''Икра гребешка'' | |||
|- | |||
| ''Икра (Сердцевидка)''<!--Cockle--> | |||
| ''Икра сердцевидки'' | |||
|- | |||
| ''Икра (Краб)''<!--Crab--> | |||
| ''Икра краба'' | |||
|- | |||
| ''Икра (Рак)''<!--Crayfish--> | |||
| ''Икра рака'' | |||
|- | |||
| ''Икра (Багрянник)''<!--Crimsonfish--> | |||
| ''Икра Багрянника'' | |||
|- | |||
| ''Икра (Дорада)''<!--Dorado--> | |||
| ''Икра дорады'' | |||
|- | |||
| ''Икра (Угорь)''<!--Eel--> | |||
| ''Икра угря'' | |||
|- | |||
| ''Икра (Камбала)''<!--Flounder--> | |||
| ''Икра камбалы'' | |||
|- | |||
| ''Икра (Пятнистый криворот)''<!--Ghostfish--> | |||
| ''Икра пятнистого криворота'' | |||
|- | |||
| ''Икра (Ледорыб)''<!--Glacierfish--> | |||
| ''Икра Ледорыба'' | |||
|- | |||
| ''Икра (Ледорыб-младший)''<!--Glacierfish Jr.--> | |||
| ''Икра Ледорыба-младшего'' | |||
|- | |||
| ''Икра (Бычок)''<!--Goby--> | |||
| ''Икра бычка'' | |||
|- | |||
| ''Икра (Палтус)''<!--Halibut--> | |||
| ''Икра палтуса'' | |||
|- | |||
| ''Икра (Сельдь)''<!--Herring--> | |||
| ''Икра сельди'' | |||
|- | |||
| ''Икра (Ледопип)''<!--Ice Pip--> | |||
| ''Икра ледопипа'' | |||
|- | |||
| ''Икра (Большеротый окунь)''<!--Largemouth Bass--> | |||
| ''Икра большеротого окуня'' | |||
|- | |||
| ''Икра (Лавовый угорь)''<!--Lava Eel--> | |||
| ''Икра лавового угря'' | |||
|- | |||
| ''Икра (Легенда)''<!--Legend--> | |||
| ''Икра Легенды'' | |||
|- | |||
| ''Икра (Легенда II)''<!--Legend II--> | |||
| ''Икра Легенды II'' | |||
|- | |||
| ''Икра (Змеезуб)''<!--Lingcod--> | |||
| ''Икра змеезуба'' | |||
|- | |||
| ''Икра (Крылатка)''<!--Lionfish--> | |||
| ''Икра крылатки'' | |||
|- | |||
| ''Икра (Омар)''<!--Lobster--> | |||
| ''Икра омара'' | |||
|- | |||
| ''Икра (Полуночный карп)''<!--Midnight Carp--> | |||
| ''Икра полуночного карпа'' | |||
|- | |||
| ''Икра (Ночной кальмар)''<!--Midnight Squid--> | |||
| ''Икра ночного кальмара'' | |||
|- | |||
| ''Икра (Мисс Морской черт)''<!--Ms. Angler--> | |||
| ''Икра Мисс Морской черт'' | |||
|- | |||
| ''Икра (Мидия)''<!--Mussel--> | |||
| ''Икра мидий'' | |||
|- | |||
| ''Икра (Карп-мутант)''<!--Mutant Carp--> | |||
| ''Икра Карпа-мутанта'' | |||
|- | |||
| ''Икра (Осьминог)''<!--Octopus--> | |||
| ''Икра осьминога'' | |||
|- | |||
| ''Икра (Устрица)''<!--Oyster--> | |||
| ''Икра устриц'' | |||
|- | |||
| ''Икра (Окунь)''<!--Perch--> | |||
| ''Икра окуня'' | |||
|- | |||
| ''Икра (Литорина)''<!--Periwinkle--> | |||
| ''Икра литорин'' | |||
|- | |||
| ''Икра (Щука)''<!--Pike--> | |||
| ''Икра щуки'' | |||
|- | |||
| ''Икра (Иглобрюх)''<!--Pufferfish--> | |||
| ''Икра иглобрюха'' | |||
|- | |||
| ''Икра (Радиоактивный карп)''<!--Radioactive Carp--> | |||
| ''Икра Радиоактивного карпа'' | |||
|- | |||
| ''Икра (Радужная форель)''<!--Rainbow Trout--> | |||
| ''Икра радужной форели'' | |||
|- | |||
| ''Икра (Барабулька)''<!--Red Mullet--> | |||
| ''Икра барабульки'' | |||
|- | |||
| ''Икра (Берикс)''<!--Red Snapper--> | |||
| ''Икра берикса'' | |||
|- | |||
| ''Икра (Лосось)''<!--Salmon--> | |||
| ''Икра лосося'' | |||
|- | |||
| ''Икра (Песковник)''<!--Sandfish--> | |||
| ''Икра песковника'' | |||
|- | |||
| ''Икра (Сардина)''<!--Sardine--> | |||
| ''Икра сардины'' | |||
|- | |||
| ''Икра (Скорпионовый карп)''<!--Scorpion Carp--> | |||
| ''Икра скорпионового карпа'' | |||
|- | |||
| ''Икра (Морской огурец)''<!--Sea Cucumber--> | |||
| ''Икра морского огурца'' | |||
|- | |||
| ''Икра (Морской еж)''<!--Sea Urchin--> | |||
| ''Икра морского ежа'' | |||
|- | |||
| ''Икра (Шэд)''<!--Shad--> | |||
| ''Икра шэда'' | |||
|- | |||
| ''Икра (Креветка)''<!--Shrimp--> | |||
| ''Икра креветок'' | |||
|- | |||
| ''Икра (Слаймджек)''<!--Slimejack--> | |||
| ''Икра слаймджека'' | |||
|- | |||
| ''Икра (Малоротый окунь)''<!--Smallmouth Bass--> | |||
| ''Икра малоротого окуня'' | |||
|- | |||
| ''Икра (Улитка)''<!--Snail--> | |||
| ''Икра улиток'' | |||
|- | |||
| ''Икра (Малек Багрянника)''<!--Son of Crimsonfish--> | |||
| ''Икра Малька Багрянника'' | |||
|- | |||
| ''Икра (Жуть-рыба)''<!--Spook Fish--> | |||
| ''Икра жуть-рыбы'' | |||
|- | |||
| ''Икра (Кальмар)''<!--Squid--> | |||
| ''Икра кальмара'' | |||
|- | |||
| ''Икра (Скат)''<!--Stingray--> | |||
| ''Икра ската'' | |||
|- | |||
| ''Икра (Рыба-камень)''<!--Stonefish--> | |||
| ''Икра рыбы-камня'' | |||
|- | |||
| ''Икра (Осетр)''<!--Sturgeon--> | |||
| ''Икра осетра'' | |||
|- | |||
| ''Икра (Солнечник)''<!--Sunfish--> | |||
| ''Икра солнечника'' | |||
|- | |||
| ''Икра (Чудо-огурец)''<!--Super Cucumber--> | |||
| ''Икра чудо-огурца'' | |||
|- | |||
| ''Икра (Тигровая форель)''<!--Tiger Trout--> | |||
| ''Икра тигровой форели'' | |||
|- | |||
| ''Икра (Тиляпия)''<!--Tilapia--> | |||
| ''Икра тиляпии'' | |||
|- | |||
| ''Икра (Тунец)''<!--Tuna--> | |||
| ''Икра тунца'' | |||
|- | |||
| ''Икра (Лосось пустоты)''<!--Void Salmon--> | |||
| ''Икра лосося пустоты'' | |||
|- | |||
| ''Икра (Желтый судак)''<!--Walleye--> | |||
| ''Икра желтого судака'' | |||
|- | |||
| ''Икра (Лесоплюх)''<!--Woodskip--> | |||
| ''Икра лесоплюха'' | |||
|- | |||
| [[Salmonberry]] | |||
| ''Морошка'' | |||
| ''Малина'' | |||
|- | |||
| [[Summer Squash Seeds]] | |||
| ''Семена сквоша'' | |||
| ''Семена кабачка'' | |||
|- | |||
| [[Summer Squash]] | |||
| ''Сквош'' | |||
| ''Кабачок'' | |||
|- | |||
|rowspan="71" valign="top"| [[Targeted Bait]] | |||
| ''Наживка: Альбакор''<!--Albacore--> | |||
| ''Наживка на альбакора'' | |||
|- | |||
| ''Наживка: Анчоус''<!--Anchovy--> | |||
| ''Наживка на анчоуса'' | |||
|- | |||
| ''Наживка: Морской черт''<!--Angler--> | |||
| ''Наживка на Морского черта'' | |||
|- | |||
| ''Наживка: Рыба-капля''<!--Blobfish--> | |||
| ''Наживка на рыбу-каплю'' | |||
|- | |||
| ''Наживка: Голубой дискус''<!--Blue Discus--> | |||
| ''Наживка на голубого дискуса'' | |||
|- | |||
| ''Наживка: Лещ''<!--Bream--> | |||
| ''Наживка на леща'' | |||
|- | |||
| ''Наживка: Сомик''<!--Bullhead--> | |||
| ''Наживка на сомика'' | |||
|- | |||
| ''Наживка: Карп''<!--Carp--> | |||
| ''Наживка на карпа'' | |||
|- | |||
| ''Наживка: Сом''<!--Catfish--> | |||
| ''Наживка на сома'' | |||
|- | |||
| ''Наживка: Голавль''<!--Chub--> | |||
| ''Наживка на голавля'' | |||
|- | |||
| ''Наживка: Гребешок''<!--Clam--> | |||
| ''Приманка для гребешков'' | |||
|- | |||
| ''Наживка: Сердцевидка''<!--Cockle--> | |||
| ''Приманка для сердцевидок'' | |||
|- | |||
| ''Наживка: Краб''<!--Crab--> | |||
| ''Приманка для крабов'' | |||
|- | |||
| ''Наживка: Рак''<!--Crayfish--> | |||
| ''Приманка для раков'' | |||
|- | |||
| ''Наживка: Багрянник''<!--Crimsonfish--> | |||
| ''Наживка на Багрянника'' | |||
|- | |||
| ''Наживка: Дорада''<!--Dorado--> | |||
| ''Наживка на дораду'' | |||
|- | |||
| ''Наживка: Угорь''<!--Eel--> | |||
| ''Наживка на угря'' | |||
|- | |||
| ''Наживка: Камбала''<!--Flounder--> | |||
| ''Наживка на камбалу'' | |||
|- | |||
| ''Наживка: Пятнистый криворот''<!--Ghostfish--> | |||
| ''Наживка на пятнистого криворота'' | |||
|- | |||
| ''Наживка: Ледорыб''<!--Glacierfish--> | |||
| ''Наживка на Ледорыба'' | |||
|- | |||
| ''Наживка: Ледорыб-младший''<!--Glacierfish Jr.--> | |||
| ''Наживка на Ледорыба-младшего'' | |||
|- | |||
| ''Наживка: Бычок''<!--Goby--> | |||
| ''Наживка на бычка'' | |||
|- | |||
| ''Наживка: Палтус''<!--Halibut--> | |||
| ''Наживка на палтуса'' | |||
|- | |||
| ''Наживка: Сельдь''<!--Herring--> | |||
| ''Наживка на сельдь'' | |||
|- | |||
| ''Наживка: Ледопип''<!--Ice Pip--> | |||
| ''Наживка на ледопипа'' | |||
|- | |||
| ''Наживка: Большеротый окунь''<!--Largemouth Bass--> | |||
| ''Наживка на большеротого окуня'' | |||
|- | |||
| ''Наживка: Лавовый угорь''<!--Lava Eel--> | |||
| ''Наживка на лавового угря'' | |||
|- | |||
| ''Наживка: Легенда''<!--Legend--> | |||
| ''Наживка на Легенду'' | |||
|- | |||
| ''Наживка: Легенда II''<!--Legend II--> | |||
| ''Наживка на Легенду II'' | |||
|- | |||
| ''Наживка: Змеезуб''<!--Lingcod--> | |||
| ''Наживка на змеезуба'' | |||
|- | |||
| ''Наживка: Крылатка''<!--Lionfish--> | |||
| ''Наживка на крылатку'' | |||
|- | |||
| ''Наживка: Омар''<!--Lobster--> | |||
| ''Приманка для омаров'' | |||
|- | |||
| ''Наживка: Полуночный карп''<!--Midnight Carp--> | |||
| ''Наживка на полуночного карпа'' | |||
|- | |||
| ''Наживка: Ночной кальмар''<!--Midnight Squid--> | |||
| ''Наживка на ночного кальмара'' | |||
|- | |||
| ''Наживка: Мисс Морской черт''<!--Ms. Angler--> | |||
| ''Наживка на Мисс Морской черт'' | |||
|- | |||
| ''Наживка: Мидия''<!--Mussel--> | |||
| ''Приманка для мидий'' | |||
|- | |||
| ''Наживка: Карп-мутант''<!--Mutant Carp--> | |||
| ''Наживка на Карпа-мутанта'' | |||
|- | |||
| ''Наживка: Осьминог''<!--Octopus--> | |||
| ''Наживка на осьминога'' | |||
|- | |||
| ''Наживка: Устрица''<!--Oyster--> | |||
| ''Приманка для устриц'' | |||
|- | |||
| ''Наживка: Окунь''<!--Perch--> | |||
| ''Наживка на окуня'' | |||
|- | |||
| ''Наживка: Литорина''<!--Periwinkle--> | |||
| ''Приманка для литорин'' | |||
|- | |||
| ''Наживка: Щука''<!--Pike--> | |||
| ''Наживка на щуку'' | |||
|- | |||
| ''Наживка: Иглобрюх''<!--Pufferfish--> | |||
| ''Наживка на иглобрюха'' | |||
|- | |||
| ''Наживка: Радиоактивный карп''<!--Radioactive Carp--> | |||
| ''Наживка на Радиоактивного карпа'' | |||
|- | |||
| ''Наживка: Радужная форель''<!--Rainbow Trout--> | |||
| ''Наживка на радужную форель'' | |||
|- | |||
| ''Наживка: Барабулька''<!--Red Mullet--> | |||
| ''Наживка на барабульку'' | |||
|- | |||
| ''Наживка: Берикс''<!--Red Snapper--> | |||
| ''Наживка на берикса'' | |||
|- | |||
| ''Наживка: Лосось''<!--Salmon--> | |||
| ''Наживка на лосося'' | |||
|- | |||
| ''Наживка: Песковник''<!--Sandfish--> | |||
| ''Наживка на песковника'' | |||
|- | |||
| ''Наживка: Сардина''<!--Sardine--> | |||
| ''Наживка на сардину'' | |||
|- | |||
| ''Наживка: Скорпионовый карп''<!--Scorpion Carp--> | |||
| ''Наживка на скорпионового карпа'' | |||
|- | |||
| ''Наживка: Морской огурец''<!--Sea Cucumber--> | |||
| ''Наживка на морского огурца'' | |||
|- | |||
| ''Наживка: Шэд''<!--Shad--> | |||
| ''Наживка на шэда'' | |||
|- | |||
| ''Наживка: Креветка''<!--Shrimp--> | |||
| ''Приманка для креветок'' | |||
|- | |||
| ''Наживка: Слаймджек''<!--Slimejack--> | |||
| ''Наживка на слаймджека'' | |||
|- | |||
| ''Наживка: Малоротый окунь''<!--Smallmouth Bass--> | |||
| ''Наживка на малоротого окуня'' | |||
|- | |||
| ''Наживка: Улитка''<!--Snail--> | |||
| ''Приманка для улиток'' | |||
|- | |||
| ''Наживка: Малек Багрянника''<!--Son of Crimsonfish--> | |||
| ''Наживка на Малька Багрянника'' | |||
|- | |||
| ''Наживка: Жуть-рыба''<!--Spook Fish--> | |||
| ''Наживка на жуть-рыбу'' | |||
|- | |||
| ''Наживка: Кальмар''<!--Squid--> | |||
| ''Наживка на кальмара'' | |||
|- | |||
| ''Наживка: Скат''<!--Stingray--> | |||
| ''Наживка на ската'' | |||
|- | |||
| ''Наживка: Рыба-камень''<!--Stonefish--> | |||
| ''Наживка на рыбу-камень'' | |||
|- | |||
| ''Наживка: Осетр''<!--Sturgeon--> | |||
| ''Наживка на осетра'' | |||
|- | |||
| ''Наживка: Солнечник''<!--Sunfish--> | |||
| ''Наживка на солнечника'' | |||
|- | |||
| ''Наживка: Чудо-огурец''<!--Super Cucumber--> | |||
| ''Наживка на чудо-огурец'' | |||
|- | |||
| ''Наживка: Тигровая форель''<!--Tiger Trout--> | |||
| ''Наживка на тигровую форель'' | |||
|- | |||
| ''Наживка: Тиляпия''<!--Tilapia--> | |||
| ''Наживка на тиляпию'' | |||
|- | |||
| ''Наживка: Тунец''<!--Tuna--> | |||
| ''Наживка на тунца'' | |||
|- | |||
| ''Наживка: Лосось пустоты''<!--Void Salmon--> | |||
| ''Наживка на лосося пустоты'' | |||
|- | |||
| ''Наживка: Желтый судак''<!--Walleye--> | |||
| ''Наживка на желтого судака'' | |||
|- | |||
| ''Наживка: Лесоплюх''<!--Woodskip--> | |||
| ''Наживка на лесоплюха'' | |||
|- | |||
| [[Wine]] (flavored) | |||
| ''Вино из морошки''<!--Salmonberry--> | |||
| ''Малиновое вино'' | |||
|} | |||
===Furniture=== | |||
; Hungarian | |||
: {| class="wikitable" | |||
|- | |||
! 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 | |||
: {| class="wikitable" | |||
|- | |||
! item | |||
! old name | |||
! new name | |||
|- | |||
| [[Corn Plant]] | |||
| ''Кукуруза'' | |||
| ''Драцена'' | |||
|- | |||
| [[Pierre's Sign]] | |||
| ''Знак Пьера'' | |||
| ''Вывеска Пьера'' | |||
|} | |||
===Hats=== | |||
; French | |||
: {| class="wikitable" | |||
|- | |||
! item | |||
! old name | |||
! new name | |||
|- | |||
| [[Good Ol' Cap]] | |||
| ''Veille casquette'' | |||
| ''Vieille casquette'' | |||
|} | |||
; Russian | |||
: {| class="wikitable" | |||
|- | |||
! 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 | |||
: {| class="wikitable" | |||
|- | |||
! item | |||
! old name | |||
! new name | |||
|- | |||
| Dinosaur Pants | |||
| ''Динозавровы штаны'' | |||
| ''Динозавровые штаны'' | |||
|} | |||
===Shirts=== | |||
; Hungarian | |||
: {| class="wikitable" | |||
|- | |||
! item | |||
! old name | |||
! new name | |||
|- | |||
| Goodnight Shirt | |||
| ''Jóéjt póló'' | |||
| ''Jó éjt póló'' | |||
|} | |||
===Tools=== | |||
; Hungarian | |||
: {| class="wikitable" | |||
|- | |||
! 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 | |||
: {| class="wikitable" | |||
|- | |||
! item | |||
! old name | |||
! new name | |||
|- | |||
| [[Iridium Needle]] | |||
| ''Irídium tű'' | |||
| ''Irídiumtű'' | |||
|- | |||
| [[Iridium Scythe]] | |||
| ''Irídium kasza'' | |||
| ''Irídiumkasza'' | |||
|} | |||
; Russian | |||
: {| class="wikitable" | |||
|- | |||
! 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 | |||
: {| class="wikitable" | |||
|- | |||
! monster | |||
! old name | |||
! new name | |||
|- | |||
| [[Truffle Crab]] | |||
| ''Kőrák'' | |||
| ''Szarvasgombarák'' | |||
|} | |||
==XNB impact== | |||
<!-- | |||
Updated up to 1.6.16 alpha 2025-09-13. | |||
--> | |||
===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 <samp>\</samp> to <samp>/</samp> in asset names (since that's backwards compatible). | |||
[[Modding:Using XNB mods|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 [[Modding:Content Patcher|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. | |||
{| class="wikitable" | |||
|- | |||
!rowspan="2"| content asset | |||
!rowspan="2"| changes in 1.6.16 | |||
!colspan="2"| compatibility for pre-1.6.16 mods | |||
|- | |||
! XNB mods | |||
! Content Patcher packs | |||
|- | |||
| <samp>Characters/Dialogue/Abigail</samp><br /><samp>Characters/Dialogue/Alex</samp><br /><samp>Characters/Dialogue/Emily</samp><br /><samp>Characters/Dialogue/Haley</samp><br /><samp>Characters/Dialogue/Harvey</samp> | |||
| Removed unused event dialogues. | |||
| | |||
| | |||
|- | |||
| <samp>Characters/Dialogue/LeoMainland</samp> | |||
| Added missing <samp>AcceptGift_(TR)ParrotEgg</samp> dialogue key (copied from <samp>Characters/Dialogue/Leo</samp>). | |||
| ✘ will remove changes | |||
| | |||
|- | |||
| <samp>Characters/Dialogue/Lewis</samp> | |||
| Added missing <samp>$h</samp> portrait in <samp>summer_Town_57_40</samp> dialogue. | |||
| ✘ will remove changes | |||
| | |||
|- | |||
| <samp>Characters/Dialogue/Marnie</samp> | |||
| Fixed a capitalization typo. | |||
| ✘ will remove changes | |||
| | |||
|- | |||
| <samp>Characters/Dialogue/MarriageDialogue</samp> | |||
| Removed some redundant <samp>[Indoor|Rainy]_Day_{{t|NPC}}</samp> dialogues. | |||
| ✘ will remove changes | |||
| | |||
|- | |||
| <samp>Characters/Dialogue/Penny</samp> | |||
| Removed unused event dialogues. | |||
| | |||
| | |||
|- | |||
| <samp>Characters/Dialogue/Sam</samp> | |||
|   | |||
* Merged <samp>Event_band[1|2|3|4]</samp> dialogue keys into <samp>Event_band</samp>. | |||
* Removed unused event dialogues. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Characters/Dialogue/Sebastian</samp><br /><samp>Characters/Dialogue/Shane</samp> | |||
| Removed unused event dialogues. | |||
| | |||
| | |||
|- | |||
| <samp>Data/CookingRecipes</samp> | |||
| [[#Data/CookingRecipes|Changed some recipe keys]]. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/AnimalShop</samp><br /><samp>Data/Events/ArchaeologyHouse</samp> | |||
| Replaced <samp>removeQuest</samp> commands with <samp>completeQuest</samp>. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Beach</samp> | |||
|   | |||
* Replaced <samp>awardFestivalPrize</samp> commands with <samp>addItem</samp>. | |||
* Replaced <samp>removeQuest</samp> commands with <samp>completeQuest</samp>. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Farm</samp><br /><samp>Data/Events/FarmHouse</samp> | |||
| Replaced <samp>awardFestivalPrize</samp> commands with <samp>addItem</samp>. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Forest</samp> | |||
|   | |||
* Replaced <samp>awardFestivalPrize</samp> commands with <samp>addItem</samp>. | |||
* Fixed event commands with invalid arguments. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/HaleyHouse</samp><br /><samp>Data/Events/Hospital</samp> | |||
| Fixed event commands with invalid arguments. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/IslandHut</samp> | |||
| Quoted "???" names for consistency. | |||
| | |||
| | |||
|- | |||
| <samp>Data/Events/IslandSouth</samp> | |||
| Fixed event commands with invalid arguments. | |||
| In 1.6.16: ✘ will remove changes<br />In 1.7: '''✘ broken'''<br /><small>1.7 will add a new <samp>skippable</samp> argument.</small> | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/JoshHouse</samp> | |||
|   | |||
* Updated for [[#Data/CookingRecipes|new cooking recipe keys]]. | |||
* Fixed a George dialogue line which wasn't shown in 1.6.9+. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Mine</samp> | |||
| Replaced <samp>awardFestivalPrize</samp> commands with <samp>addItem</samp>. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Mountain</samp> | |||
|   | |||
* Replaced <samp>awardFestivalPrize</samp> commands with <samp>addItem</samp>. | |||
* Fixed event commands with invalid arguments. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Saloon</samp> | |||
| Fixed event commands with invalid arguments. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/SamHouse</samp> | |||
|   | |||
* Replaced <samp>removeQuest</samp> commands with <samp>completeQuest</samp>. | |||
* Updated for merged <samp>Characters/Dialogue/Sam:Event_band[1|2|3|4]</samp> dialogues. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Town</samp> | |||
|   | |||
* Replaced <samp>awardFestivalPrize</samp> commands with <samp>addItem</samp>. | |||
* Replaced <samp>removeQuest</samp> commands with <samp>completeQuest</samp>. | |||
* Fixed event commands with invalid arguments. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Events/Woods</samp> | |||
| Replaced <samp>removeQuest</samp> commands with <samp>completeQuest</samp>. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/ExtraDialogue</samp> | |||
| Replaced <samp>removeQuest</samp> commands with <samp>completeQuest</samp>. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/FarmAnimals</samp> | |||
| Removed <samp>UseFlippedRightForLeft</samp> for [[dinosaur]]. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Furniture</samp> | |||
|   | |||
* Added <samp>spawns_butterflies</samp> context tag for [[Butterfly Hutch|butterfly hutch]]. | |||
* Disabled rotation for [[Decorative Joja Door|decorative Joja door]]. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/hats</samp> | |||
| Renamed <samp>Data/hats</samp> → <samp>Data/Hats</samp>. | |||
| '''✘ broken''' | |||
| | |||
|- | |||
| <samp>Data/LocationContexts</samp> | |||
| Fixed non-deterministic weather conditions. | |||
| ✘ will remove fixes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Locations</samp> | |||
|   | |||
* Added <samp>FOR_TUTORIAL_CATCH</samp> arguments to <samp>LOCATION_FISH</samp> queries. | |||
* Changed [[Legend]] condition to use new <samp>IS_RAINING</samp> [[Modding:Game state queries|query]] to support mods weathers. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/LostItemsShop</samp> | |||
| [[#Data/LostItemsShop|Added new field to data model]]. | |||
| '''✘ broken''' | |||
| | |||
|- | |||
| <samp>Data/Objects</samp> | |||
| Added [[#New context tags|new context tags]] (<samp>fish_skip_minigame</samp> and <samp>ignore_gift_limits</samp>). | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/PassiveFestivals</samp> | |||
|   | |||
* [[#Data/PassiveFestivals|Added new field to data model]]. | |||
* Added <samp>InLocations</samp> values for [[Trout Derby]] and [[Squidfest]]. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Quests</samp> | |||
| Removed unused quests 10 ("''Copper Ore''") and 131 ("''Willy's Challenge''"). | |||
| | |||
| | |||
|- | |||
| <samp>Data/Shops</samp> | |||
|   | |||
* Updated for [[#Data/CookingRecipes|new cooking recipe keys]]. | |||
* Fixed Pierre's shop selling duplicate corn/sunflower/wheat seeds when you gave him the missing stocklist. | |||
| ✘ will remove fixes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/SpecialOrders</samp> | |||
| [[#Data/SpecialOrders|Added new field to data model]]. | |||
| '''✘ broken''' | |||
| | |||
|- | |||
| <samp>Data/Tools</samp> | |||
|   | |||
* [[#Data/Tools|Added new field to data model]]. | |||
* Removed <samp>Lantern</samp> tool. | |||
| '''✘ broken''' | |||
| | |||
|- | |||
| <samp>Data/Weapons</samp> | |||
|   | |||
* [[#Data/Weapons|Added new field to data model]]. | |||
* Added [[#New context tags|new context tags]] (<samp>is_scythe</samp>). | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Data/Weddings</samp> | |||
|   | |||
* Fixed Lewis skipping his matrimonial dialogue at the farmer's wedding. | |||
* Quoted translation keys for consistency. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Strings/1_6_Strings</samp> | |||
| Replaced <samp>awardFestivalPrize</samp> commands with <samp>addItem</samp>. | |||
| ✘ will remove changes | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Strings/Locations</samp> | |||
|   | |||
* Replaced <samp>removeQuest</samp> commands with <samp>completeQuest</samp>. | |||
* Quoted "???" names for consistency. | |||
| '''✘ broken''' | |||
| ✓ mostly unaffected | |||
|- | |||
| <samp>Strings/StringsFromCSFiles</samp><br /><samp>Strings/StringsFromMaps</samp><br /><samp>Strings/Tools</samp> | |||
| Removed unused translations. | |||
| | |||
| | |||
|- | |||
| <samp>Strings/UI</samp> | |||
| Merged male/female variants of <samp>PondQuery_StatusRequestPending_*</samp> entries. | |||
| '''✘ 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. | |||
* <samp>Maps/Bus(people)</samp> | |||
* <samp>Maps/busPeople</samp> | |||
* <samp>Maps/Island_Secret</samp> | |||
[[Category:Modding]] | |||
[[zh:模组:迁移至游戏本体1.6.16]] | |||
Revision as of 21:21, 13 September 2025
This page is for mod authors. Players: see the mod compatibility list instead.
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

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:
-
- 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/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/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. |
| 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
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. |
Dialogue changes
- Added new dialogue keys:
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. - 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. |
| 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. |
| 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:
| Condition | effect |
|---|---|
| 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_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). |
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
FarmHouseWallpaperCan 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
- The game now tracks completed quest IDs. You can check them using new game state queries or in C# via
Game1.player.questsCompleted. The list is retroactively populated for pre-existing saves. - Added PLAYER_QUEST_ACTIVE and PLAYER_QUEST_COMPLETE game state queries.
- Added completeQuest event command and CompleteQuest trigger action.
- Added QuestIds constants for C# mods.
- Added item spawn field to produce quest items.
- Fixed intermittent crash when an item delivery quest for a non-Wizard NPC requests a cooking-type item.
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>
roommateJobEquivalent 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
roommateA 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.
Trigger action changes
- Added 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 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.
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 likeGame1.content.CreateTemporary(), etc. The new interface also includes full IntelliSense docs. - Moved three types:
type changes LocalizedContentManager Moved from the StardewValleynamespace intoStardewValley.ContentManagement.LocalizedContentManager.LanguageCode
LocalizedContentManager.LanguageChangedHandler- Moved from the
StardewValleynamespace intoStardewValley.ContentManagement. - Moved out of the nested type (e.g. change
LocalizedContentManager.LanguageCodeto justLanguageCodein your mod code).
- Moved from the
- 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 toGame1.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 |
| |
| SetHotKey(…) | Removed. Set the hotkey through the constructor instead. |
Other changes
- Added PlatformAchievementIds constants.
- 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.
- Removed broken Lantern tool, Raft tool, and their related logic.
- 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.
- 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 Морошка Малина 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...
- 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 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 [Indoor|Rainy]_Day_<NPC> dialogues.
|
✘ will remove changes | |
| Characters/Dialogue/Penny | Removed unused event dialogues. | ||
| Characters/Dialogue/Sam |
|
✘ broken | ✓ mostly unaffected |
| Characters/Dialogue/Sebastian Characters/Dialogue/Shane |
Removed unused event dialogues. | ||
| 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 |
|
✘ broken | ✓ mostly unaffected |
| Data/Events/Farm Data/Events/FarmHouse |
Replaced awardFestivalPrize commands with addItem. | ✘ will remove changes | ✓ mostly unaffected |
| Data/Events/Forest |
|
✘ 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 |
|
✘ will remove changes | ✓ mostly unaffected |
| Data/Events/Saloon | Fixed event commands with invalid arguments. | ✘ will remove changes | ✓ mostly unaffected |
| Data/Events/SamHouse |
|
✘ broken | ✓ mostly unaffected |
| Data/Events/Town |
|
✘ broken | ✓ mostly unaffected |
| Data/Events/Woods | Replaced removeQuest commands with completeQuest. | ✘ broken | ✓ mostly unaffected |
| Data/ExtraDialogue | Replaced removeQuest commands with completeQuest. | ✘ broken | ✓ mostly unaffected |
| Data/FarmAnimals | Removed UseFlippedRightForLeft for dinosaur. | ✘ broken | ✓ mostly unaffected |
| Data/Furniture |
|
✘ broken | ✓ mostly unaffected |
| Data/hats | Renamed Data/hats → Data/Hats. | ✘ 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/Objects | Added new context tags (fish_skip_minigame and ignore_gift_limits). | ✘ broken | ✓ mostly unaffected |
| Data/PassiveFestivals |
|
✘ broken | ✓ mostly unaffected |
| 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/Weddings |
|
✘ will remove changes | ✓ mostly unaffected |
| Strings/1_6_Strings | Replaced awardFestivalPrize commands with addItem. | ✘ will remove changes | ✓ mostly unaffected |
| Strings/Locations |
|
✘ broken | ✓ mostly unaffected |
| Strings/StringsFromCSFiles Strings/StringsFromMaps Strings/Tools |
Removed unused translations. | ||
| Strings/UI | Merged male/female variants of PondQuery_StatusRequestPending_* entries. | ✘ 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