Changes

Jump to navigation Jump to search
→‎Custom pets: + gifts in 1.6.0, behavior ID in 1.6.4
Line 46: Line 46:     
===Trigger actions===
 
===Trigger actions===
: ''Main article: [[Modding:Trigger actions]].''
+
{{/doc status|[[Modding:Trigger actions]]|done=true}}
    
Trigger actions are a new feature which lets content packs perform an action when something happens, with support for a wide range of actions (like sending mail, changing friendship, starting a quest, etc).
 
Trigger actions are a new feature which lets content packs perform an action when something happens, with support for a wide range of actions (like sending mail, changing friendship, starting a quest, etc).
Line 120: Line 120:     
===Unique string IDs===
 
===Unique string IDs===
: ''Main article: [[Modding:Common data field types#Unique string ID]].''
+
{{/doc status|[[Modding:Common data field types#Unique string ID]]|done=true}}
    
Stardew Valley now uses ''unique string IDs'' throughout the code to identify data (like events, locations, items, NPCs, etc). For example, <code>Town</code> is the unique ID for the [[Pelican Town]] location; no other location can use that ID. The IDs are used for a wide range of purposes, from internal game logic to [[Modding:Content Patcher|content pack edits]].
 
Stardew Valley now uses ''unique string IDs'' throughout the code to identify data (like events, locations, items, NPCs, etc). For example, <code>Town</code> is the unique ID for the [[Pelican Town]] location; no other location can use that ID. The IDs are used for a wide range of purposes, from internal game logic to [[Modding:Content Patcher|content pack edits]].
Line 173: Line 173:  
==What's new for items==
 
==What's new for items==
 
===Custom items===
 
===Custom items===
 +
{{/doc status|[[Modding:Items]]|done=false}}
 +
 
====Overview====
 
====Overview====
 
Stardew Valley 1.6 makes three major changes to how items work in the game:
 
Stardew Valley 1.6 makes three major changes to how items work in the game:
Line 338: Line 340:  
                     "Texture": "Mods/{{ModId}}/Objects",
 
                     "Texture": "Mods/{{ModId}}/Objects",
 
                     "SpriteIndex": 0
 
                     "SpriteIndex": 0
 +
                }
 
             }
 
             }
 
         },
 
         },
Line 367: Line 370:  
                     "Texture": "Mods/{{ModId}}/Crops",
 
                     "Texture": "Mods/{{ModId}}/Crops",
 
                     "SpriteIndex": 0
 
                     "SpriteIndex": 0
 +
                }
 
             }
 
             }
 
         },
 
         },
Line 375: Line 379:  
             "Target": "Mods/{{ModId}}/Crops, Mods/{{ModId}}/Objects",
 
             "Target": "Mods/{{ModId}}/Crops, Mods/{{ModId}}/Objects",
 
             "FromFile": "assets/{{TargetWithoutPath}}.png" // assets/Crops.png, assets/Objects.png
 
             "FromFile": "assets/{{TargetWithoutPath}}.png" // assets/Crops.png, assets/Objects.png
         },
+
         }
 
     ]
 
     ]
 
}</nowiki>|lang=javascript}}
 
}</nowiki>|lang=javascript}}
Line 562: Line 566:     
===Custom big craftables:===
 
===Custom big craftables:===
''See also: [[Modding:Items#Big_craftables|Modding:Items]]''
+
{{/doc status|[[Modding:Items#Big craftables]]|done=false}}
    
You can now create/edit [[Modding:Items#Big craftables|big craftables]] by editing the new <samp>Data/BigCraftables</samp> asset, which replaces the previous slash-delimited <samp>Data/BigCraftablesInformation</samp>.
 
You can now create/edit [[Modding:Items#Big craftables|big craftables]] by editing the new <samp>Data/BigCraftables</samp> asset, which replaces the previous slash-delimited <samp>Data/BigCraftablesInformation</samp>.
Line 774: Line 778:     
===Custom fences===
 
===Custom fences===
 +
{{/doc status|a new doc page|done=false}}
 +
 
You can now add or customize [[Crafting#Fences|fences]] by editing the <samp>Data/Fences</samp> asset.
 
You can now add or customize [[Crafting#Fences|fences]] by editing the <samp>Data/Fences</samp> asset.
   Line 821: Line 827:     
===Custom floors (craftable) & paths===
 
===Custom floors (craftable) & paths===
 +
{{/doc status|a new doc page|done=false}}
 +
 
You can now add or customize [[Crafting#Decor|craftable floors & paths]] by editing the <samp>Data/FloorsAndPaths</samp> asset.
 
You can now add or customize [[Crafting#Decor|craftable floors & paths]] by editing the <samp>Data/FloorsAndPaths</samp> asset.
   Line 905: Line 913:     
===Custom machines===
 
===Custom machines===
: ''Main article: [[Modding:Machines]].''
+
{{/doc status|[[Modding:Machines]]|done=true}}
    
You can now add/edit machine logic by editing the <samp>Data/Machines</samp> asset. This supports the full range of vanilla functionality, including calling custom code define in C# mods.
 
You can now add/edit machine logic by editing the <samp>Data/Machines</samp> asset. This supports the full range of vanilla functionality, including calling custom code define in C# mods.
Line 912: Line 920:     
===Custom melee weapons===
 
===Custom melee weapons===
 +
{{/doc status|[[Modding:Items#Weapons]]|done=false}}
 +
 
[[Modding:Items#Weapons|Melee weapons]] are still stored in <samp>Data/Weapons</samp>, but that asset has been overhauled in Stardew Valley 1.6. The slash-delimited entries are now models to simplify edits and enable new features (like the new <samp>Projectiles</samp> feature).
 
[[Modding:Items#Weapons|Melee weapons]] are still stored in <samp>Data/Weapons</samp>, but that asset has been overhauled in Stardew Valley 1.6. The slash-delimited entries are now models to simplify edits and enable new features (like the new <samp>Projectiles</samp> feature).
   Line 1,062: Line 1,072:     
===Custom movie concessions===
 
===Custom movie concessions===
 +
{{/doc status|[[Modding:Movie theater data]]|done=false}}
 
: ''See also: [[#Custom movies|custom movies]].''
 
: ''See also: [[#Custom movies|custom movies]].''
   Line 1,108: Line 1,119:     
===Custom museum donations & rewards===
 
===Custom museum donations & rewards===
You can now add/edit the items which the [[museum]] accepts in donation and gives back in rewards through the new <samp>Data/MuseumRewards</samp> data asset.
+
{{/doc status|a new doc page|done=false}}
 +
 
 +
You can now add/edit the items which the [[museum]] gives back in rewards through the new <samp>Data/MuseumRewards</samp> data asset.
    
====Format====
 
====Format====
Line 1,211: Line 1,224:     
===Custom fruit trees===
 
===Custom fruit trees===
 +
{{/doc status|[[Modding:Fruit trees]]|done=false}}
 +
 
====Data format====
 
====Data format====
 
You can now add custom [[Fruit Trees|fruit trees]] by editing the revamped <samp>Data/fruitTrees</samp> asset. This consists of a string → model lookup, where...
 
You can now add custom [[Fruit Trees|fruit trees]] by editing the revamped <samp>Data/fruitTrees</samp> asset. This consists of a string → model lookup, where...
Line 1,370: Line 1,385:     
===Custom objects===
 
===Custom objects===
: ''See also: [[Modding:Items#Objects|Modding:Items]].''
+
{{/doc status|[[Modding:Items#Objects]]|done=false}}
 +
 
 
You can now create/edit objects (the main item type) by editing the new <samp>Data/Objects</samp> asset, which replaces the previous slash-delimited <samp>Data/objectInformation</samp>.
 
You can now create/edit objects (the main item type) by editing the new <samp>Data/Objects</samp> asset, which replaces the previous slash-delimited <samp>Data/objectInformation</samp>.
   Line 1,577: Line 1,593:     
===Custom pants===
 
===Custom pants===
 +
{{/doc status|[[Modding:Items]]|done=false}}
 +
 
You can now create/edit [[Tailoring#Pants|pants]] by editing the new <samp>Data/Pants</samp> asset, which replaces <samp>Data/clothingInformation</samp>. This consists of a string → model lookup, where...
 
You can now create/edit [[Tailoring#Pants|pants]] by editing the new <samp>Data/Pants</samp> asset, which replaces <samp>Data/clothingInformation</samp>. This consists of a string → model lookup, where...
 
* The key is the unqualified [[#Custom items|item ID]].
 
* The key is the unqualified [[#Custom items|item ID]].
Line 1,633: Line 1,651:     
===Custom shirts===
 
===Custom shirts===
 +
{{/doc status|[[Modding:Items]]|done=false}}
 +
 
You can now create/edit [[Tailoring#Shirts|shirts]] by editing the new <samp>Data/Shirts</samp> asset, which replaces <samp>Data/clothingInformation</samp>. This consists of a string → model lookup, where...
 
You can now create/edit [[Tailoring#Shirts|shirts]] by editing the new <samp>Data/Shirts</samp> asset, which replaces <samp>Data/clothingInformation</samp>. This consists of a string → model lookup, where...
 
* The key is the unqualified [[#Custom items|item ID]].
 
* The key is the unqualified [[#Custom items|item ID]].
Line 1,692: Line 1,712:     
===Custom tools===
 
===Custom tools===
 +
{{/doc status|[[Modding:Items]]|done=false}}
 +
 
You can now create/edit [[tools]] by editing the new <samp>Data/Tools</samp> asset. This consists of a string → model lookup, where...
 
You can now create/edit [[tools]] by editing the new <samp>Data/Tools</samp> asset. This consists of a string → model lookup, where...
 
* The key is the unqualified [[#Custom items|item ID]].
 
* The key is the unqualified [[#Custom items|item ID]].
Line 1,890: Line 1,912:     
===Custom wild trees===
 
===Custom wild trees===
 +
{{/doc status|a new doc page|done=false}}
 +
 
====Data format====
 
====Data format====
 
You can now create/edit [[Trees|wild trees]] by editing the <samp>Data/WildTrees</samp> asset.
 
You can now create/edit [[Trees|wild trees]] by editing the <samp>Data/WildTrees</samp> asset.
Line 2,123: Line 2,147:     
===Default recipes===
 
===Default recipes===
 +
{{/doc status|[[Modding:Recipe data]]|done=false}}
 +
 
You can now have [[Modding:Recipe data|crafting and cooking recipes]] that are learned automatically by setting the condition field to <samp>default</samp>. Any missing default recipes will be learned on day start.
 
You can now have [[Modding:Recipe data|crafting and cooking recipes]] that are learned automatically by setting the condition field to <samp>default</samp>. Any missing default recipes will be learned on day start.
   Line 2,136: Line 2,162:     
===Hats on aquarium fish===
 
===Hats on aquarium fish===
 +
{{/doc status|[[Modding:Fish data]]|done=false}}
 +
 
Custom [[Modding:Fish data|fish in aquariums]] can now wear [[hats]], just like vanilla [[Sea Urchin|sea urchins]]. This can be enabled by specifying a new field in <samp>Data/AquariumFish</samp>:
 
Custom [[Modding:Fish data|fish in aquariums]] can now wear [[hats]], just like vanilla [[Sea Urchin|sea urchins]]. This can be enabled by specifying a new field in <samp>Data/AquariumFish</samp>:
   Line 2,150: Line 2,178:     
===Context tag changes===
 
===Context tag changes===
 +
{{/doc status|[[Modding:Items#Context tags]]|done=false}}
 +
 
====New context tags====
 
====New context tags====
 
1.6 adds several new [[Modding:Items#Context tags|item context tags]]:
 
1.6 adds several new [[Modding:Items#Context tags|item context tags]]:
Line 2,365: Line 2,395:     
===Furniture changes===
 
===Furniture changes===
 +
{{/doc status|[[Modding:Items#Furniture]]|done=false}}
 +
 
<ul>
 
<ul>
 
<li>[[Modding:Items#Furniture|<samp>Data/furniture</samp>]] no longer has language variants. Translations were moved into <samp>Strings/Furniture</samp>.</li>
 
<li>[[Modding:Items#Furniture|<samp>Data/furniture</samp>]] no longer has language variants. Translations were moved into <samp>Strings/Furniture</samp>.</li>
Line 2,592: Line 2,624:  
==What's new for locations & weather==
 
==What's new for locations & weather==
 
===Custom locations===
 
===Custom locations===
 +
{{/doc status|[[Modding:Location data]]|done=true}}
 +
 
You can now add/edit locations by editing the revamped <samp>Data/Locations</samp> asset. This makes nearly everything in the location configurable — display name, default warp arrival tile, how the location is created, artifact spots / fish / forage / weeds, music, etc.
 
You can now add/edit locations by editing the revamped <samp>Data/Locations</samp> asset. This makes nearly everything in the location configurable — display name, default warp arrival tile, how the location is created, artifact spots / fish / forage / weeds, music, etc.
   Line 2,597: Line 2,631:     
===Custom location contexts===
 
===Custom location contexts===
 +
{{/doc status|[[Modding:Location data]] or a new doc page|done=false}}
 +
 
====Vanilla contexts====
 
====Vanilla contexts====
 
* The game previously had two hardcoded location context enums: <samp>Default</samp> (for the valley) and <samp>Island</samp> (for [[Ginger Island]]). These have been replaced with data models which define the location context settings, loaded from the <samp>Data/LocationContexts</samp> asset.
 
* The game previously had two hardcoded location context enums: <samp>Default</samp> (for the valley) and <samp>Island</samp> (for [[Ginger Island]]). These have been replaced with data models which define the location context settings, loaded from the <samp>Data/LocationContexts</samp> asset.
Line 2,826: Line 2,862:     
===Custom garbage cans===
 
===Custom garbage cans===
 +
{{/doc status|a new doc page|done=false}}
 +
 
====Format====
 
====Format====
 
You can now add or edit [[Garbage Can|garbage cans]] on any map by editing the new <samp>Data/GarbageCans</samp> asset (see examples below).
 
You can now add or edit [[Garbage Can|garbage cans]] on any map by editing the new <samp>Data/GarbageCans</samp> asset (see examples below).
Line 3,029: Line 3,067:     
===Custom map actions===
 
===Custom map actions===
 +
{{/doc status|[[Modding:Maps]]|done=false}}
 +
 
C# mods can now handle custom <samp>Action</samp> & <samp>TouchAction</samp> [[Modding:Maps|map properties]] by calling <samp>GameLocation.RegisterTileAction</samp> & <samp>RegisterTouchAction</samp>, and passing a callback which receives the location, map property arguments, player who activated it, and tile position.
 
C# mods can now handle custom <samp>Action</samp> & <samp>TouchAction</samp> [[Modding:Maps|map properties]] by calling <samp>GameLocation.RegisterTileAction</samp> & <samp>RegisterTouchAction</samp>, and passing a callback which receives the location, map property arguments, player who activated it, and tile position.
   Line 3,116: Line 3,156:     
===Custom map layers===
 
===Custom map layers===
 +
{{/doc status|[[Modding:Maps]]|done=false}}
 +
 
You can now add any number of [[Modding:Maps|map layers]] by suffixing a vanilla layer name (i.e. <samp>Back</samp>, <samp>Buildings</samp>, <samp>Front</samp>, or <samp>AlwaysFront</samp>) with an offset. For example, <samp>Back-1</samp> will be drawn before/under <samp>Back</samp>, and <samp>Back2</samp> will be drawn after/over it. You can increment the number to add more layers.
 
You can now add any number of [[Modding:Maps|map layers]] by suffixing a vanilla layer name (i.e. <samp>Back</samp>, <samp>Buildings</samp>, <samp>Front</samp>, or <samp>AlwaysFront</samp>) with an offset. For example, <samp>Back-1</samp> will be drawn before/under <samp>Back</samp>, and <samp>Back2</samp> will be drawn after/over it. You can increment the number to add more layers.
   Line 3,121: Line 3,163:     
===Custom minecarts===
 
===Custom minecarts===
 +
{{/doc status|a new doc page|done=false}}
 +
 
You can now extend [[minecart]]s by editing the <samp>Data\Minecarts</samp> data asset.
 
You can now extend [[minecart]]s by editing the <samp>Data\Minecarts</samp> data asset.
   Line 3,221: Line 3,265:     
===Custom passive festivals===
 
===Custom passive festivals===
 +
{{/doc status|[[Modding:Festival data]] or a new doc page|done=false}}
 +
 
You can now add or modify passive festivals by editing the <samp>Data/PassiveFestivals</samp> asset.
 
You can now add or modify passive festivals by editing the <samp>Data/PassiveFestivals</samp> asset.
   Line 3,292: Line 3,338:     
===Custom weather===
 
===Custom weather===
 +
{{/doc status|[[Modding:Weather data]]|done=false}}
 +
 
You can now change the weather algorithm by editing [[#Custom location contexts|location context data]], and (with a C# mod) implement custom weathers.
 
You can now change the weather algorithm by editing [[#Custom location contexts|location context data]], and (with a C# mod) implement custom weathers.
   Line 3,299: Line 3,347:     
===Custom world maps===
 
===Custom world maps===
: ''Main article: [[Modding:World map]].''
+
{{/doc status|[[Modding:World map]]|done=true}}
    
[[File:Modding map area.png|thumb|The default world map, with the farm map area highlighted.]]
 
[[File:Modding map area.png|thumb|The default world map, with the farm map area highlighted.]]
Line 3,313: Line 3,361:     
===New map properties===
 
===New map properties===
 +
{{/doc status|[[Modding:Maps]]|done=false}}
 +
 
1.6 adds several new [[Modding:Maps|map properties]].
 
1.6 adds several new [[Modding:Maps|map properties]].
   Line 3,385: Line 3,435:     
===Other map property changes===
 
===Other map property changes===
 +
{{/doc status|[[Modding:Maps]]|done=false}}
 +
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 3,410: Line 3,462:     
===Tile property changes===
 
===Tile property changes===
 +
{{/doc status|[[Modding:Maps]]|done=false}}
 +
 
<ul>
 
<ul>
 
<li>You can now override a tile index property by setting it as a tile property.</li>
 
<li>You can now override a tile index property by setting it as a tile property.</li>
Line 3,518: Line 3,572:     
===Other location/map changes===
 
===Other location/map changes===
 +
{{/doc status|[[Modding:Maps]] and other pages as needed|done=false}}
 +
 
* Farm data:
 
* Farm data:
 
** Added <samp>SpawnMonstersByDefault</samp> field to <samp>Data/AdditionalFarms</samp> to set the default value of the 'spawn monsters at night' [[Options#Advanced Game Options|advanced save option]].
 
** Added <samp>SpawnMonstersByDefault</samp> field to <samp>Data/AdditionalFarms</samp> to set the default value of the 'spawn monsters at night' [[Options#Advanced Game Options|advanced save option]].
Line 3,725: Line 3,781:  
==What's new for buildings==
 
==What's new for buildings==
 
===Custom buildings===
 
===Custom buildings===
 +
{{/doc status|[[Modding:Blueprint data]]|done=false}}
 +
 
You can now add custom buildings by editing the <samp>Data/Buildings</samp> asset. This consists of a string → model lookup, where...
 
You can now add custom buildings by editing the <samp>Data/Buildings</samp> asset. This consists of a string → model lookup, where...
 
* The key is a [[Modding:Common data field types#Unique string ID|unique string ID]] for the building type.
 
* The key is a [[Modding:Common data field types#Unique string ID|unique string ID]] for the building type.
Line 4,212: Line 4,270:     
===Build anywhere===
 
===Build anywhere===
 +
{{/doc status|[[Modding:Blueprint data]] and [[Modding:Maps]]|done=false}}
 +
 
* You can now allow building construction for any location using the [[#Map/tile property changes|new <samp>CanBuildHere</samp> and related map properties]]. The game will adjust accordingly (e.g. Robin will let you choose where to construct the building).
 
* You can now allow building construction for any location using the [[#Map/tile property changes|new <samp>CanBuildHere</samp> and related map properties]]. The game will adjust accordingly (e.g. Robin will let you choose where to construct the building).
 
* Buildings and animals are no longer hardcoded to the [[The Farm|farm]] location (except [[cabin]]s and the [[farmhouse]] which still are).
 
* Buildings and animals are no longer hardcoded to the [[The Farm|farm]] location (except [[cabin]]s and the [[farmhouse]] which still are).
Line 4,217: Line 4,277:     
===Other building changes===
 
===Other building changes===
 +
{{/doc status|[[Modding:Blueprint data]]|done=false}}
 +
 
: ''See also: [[#Other location/map changes|other location changes]] for location-related building changes.''
 
: ''See also: [[#Other location/map changes|other location changes]] for location-related building changes.''
   Line 4,299: Line 4,361:  
==What's new for NPCs==
 
==What's new for NPCs==
 
===Custom NPCs===
 
===Custom NPCs===
 +
{{/doc status|[[Modding:NPC data]]|done=false}}
 +
 
[[Modding:NPC data|Custom NPC data]] has been overhauled in 1.6. The new <samp>Data/Characters</samp> asset (which replaces <samp>Data/NPCDispositions</samp> + <samp>Data/spousePatios</samp> + <samp>Data/spouseRooms</samp>) uses a data model format that's easier to edit and understand, and has a lot of fields to customize previously-hardcoded data.
 
[[Modding:NPC data|Custom NPC data]] has been overhauled in 1.6. The new <samp>Data/Characters</samp> asset (which replaces <samp>Data/NPCDispositions</samp> + <samp>Data/spousePatios</samp> + <samp>Data/spouseRooms</samp>) uses a data model format that's easier to edit and understand, and has a lot of fields to customize previously-hardcoded data.
   Line 4,848: Line 4,912:     
===Custom NPC appearance===
 
===Custom NPC appearance===
 +
{{/doc status|[[Modding:NPC data]]|done=false}}
 +
 
Each NPC can now have any number of custom portraits/sprites in <samp>Data/Characters</samp> with arbitrary conditions. This lets mods add features like indoor/outdoor outfits without the performance impact of reloading textures. If multiple outfits apply, the game will choose between them with a day-stable randomization.
 
Each NPC can now have any number of custom portraits/sprites in <samp>Data/Characters</samp> with arbitrary conditions. This lets mods add features like indoor/outdoor outfits without the performance impact of reloading textures. If multiple outfits apply, the game will choose between them with a day-stable randomization.
   Line 4,897: Line 4,963:     
===Custom farm animals===
 
===Custom farm animals===
: ''Main article: [[Modding:Animal data]].''
+
{{/doc status|[[Modding:Animal data]]|done=true}}
    
You can now create and edit [[Animals|farm animals]] by editing the revamped <samp>Data/FarmAnimals</samp> asset. This changes to a data model, adds built-in support for custom animals, and allows far more customizability per animal (like its size, growth, produce, appearance and sounds, etc).
 
You can now create and edit [[Animals|farm animals]] by editing the revamped <samp>Data/FarmAnimals</samp> asset. This changes to a data model, adds built-in support for custom animals, and allows far more customizability per animal (like its size, growth, produce, appearance and sounds, etc).
    
===Custom pets===
 
===Custom pets===
 +
{{/doc status|a new doc page|done=false}}
 +
 
====Format====
 
====Format====
 
You can now create and customize [[Animals#Cat or Dog|pet]]s & pet breeds by editing the new <samp>Data/Pets</samp> asset.
 
You can now create and customize [[Animals#Cat or Dog|pet]]s & pet breeds by editing the new <samp>Data/Pets</samp> asset.
Line 4,974: Line 5,042:  
| <samp>PingPong</samp>
 
| <samp>PingPong</samp>
 
| ''(Optional)'' Whether to apply the 'ping pong' effect to the pet sprite animation. Default false.
 
| ''(Optional)'' Whether to apply the 'ping pong' effect to the pet sprite animation. Default false.
 +
|}
 +
|}
 +
 +
=====Gifts=====
 +
{| class="wikitable"
 +
|-
 +
! field
 +
! effect
 +
|-
 +
| <samp>GiftChance</samp>
 +
| ''(Optional)'' The random probability each day that the pet will give the player a gift from the <samp>Gifts</samp> list when they interact with the pet. Specified as a value between 0 (never) and 1 (always). Default .2 (20% chance).
 +
|-
 +
| <samp>Gifts</samp>
 +
| ''(Optional)'' The list of gifts that this pet can give if the <samp>GiftChance</samp> is successful. Default none.
 +
 +
This consists of a list of models with these fields:
 +
 +
{| class="wikitable"
 +
|-
 +
! field
 +
! effect
 +
|-
 +
| <samp>Id</samp>
 +
| The [[Modding:Common data field types#Unique string ID|unique string ID]] for this entry within the list.
 +
|-
 +
| <samp>QualifiedItemID</samp>
 +
| The [[Modding:Common data field types#Item ID|qualified item ID]] for the gift item to create.
 +
|-
 +
| <samp>Stack</samp>
 +
| ''(Optional)'' The stack size of the gift item to produce. Default 1.
 +
|-
 +
| <samp>MinimumFriendshipThreshold</samp>
 +
| ''(Optional)'' The friendship level that this pet must be at before it can give this gift. Defaults to 1000 (max friendship).
 +
|-
 +
| <samp>Weight</samp>
 +
| ''(Optional)'' The option's weight when randomly choosing a gift, relative to other gifts in the list (e.g. <samp>2</samp> is twice as likely as <samp>1</samp>). Default 1.
 
|}
 
|}
 
|}
 
|}
Line 4,982: Line 5,086:  
! field
 
! field
 
! effect
 
! effect
 +
|-
 +
| <samp>Id</samp>
 +
| The [[Modding:Common data field types#Unique string ID|unique string ID]] for this entry within the list.
 
|-
 
|-
 
| <samp>MoveSpeed</samp>
 
| <samp>MoveSpeed</samp>
Line 5,192: Line 5,299:     
===Custom monster eradication goals===
 
===Custom monster eradication goals===
 +
{{/doc status|a new doc page|done=false}}
 +
 
: ''See also: [[#Monster eradication goal flag changes|Monster eradication goal flag changes]].''
 
: ''See also: [[#Monster eradication goal flag changes|Monster eradication goal flag changes]].''
   Line 5,244: Line 5,353:     
===Custom phone calls===
 
===Custom phone calls===
 +
{{/doc status|a new doc page|done=false}}
 +
 
Mods can now extend the [[telephone]] with custom calls (both incoming calls, and phone numbers which the player can call).
 
Mods can now extend the [[telephone]] with custom calls (both incoming calls, and phone numbers which the player can call).
   Line 5,314: Line 5,425:     
===Custom shops===
 
===Custom shops===
 +
{{/doc status|[[Modding:Shops]]|done=true}}
 +
 
You can now create and edit shops via the new <samp>Data/Shops</samp> asset. See [[Modding:Shops]] for documentation and examples.
 
You can now create and edit shops via the new <samp>Data/Shops</samp> asset. See [[Modding:Shops]] for documentation and examples.
    
===Dialogue changes===
 
===Dialogue changes===
 +
{{/doc status|[[Modding:Dialogue]]|done=false}}
 +
 
<ul>
 
<ul>
 
<li>Added new [[Modding:Dialogue|dialogue]] keys:
 
<li>Added new [[Modding:Dialogue|dialogue]] keys:
Line 5,533: Line 5,648:     
===Schedule changes===
 
===Schedule changes===
 +
{{/doc status|[[Modding:Schedule data]]|done=false}}
 +
 
<ul>
 
<ul>
 
<li>Schedule keys are now case-insensitive.</li>
 
<li>Schedule keys are now case-insensitive.</li>
Line 5,551: Line 5,668:     
===Other NPC changes===
 
===Other NPC changes===
 +
{{/doc status|[[Modding:NPC data]] as needed|done=false}}
 +
 
<ul>
 
<ul>
 
<li>Added <samp>Game1.characterData</samp> and <samp>Game1.farmAnimalData</samp> to read NPC/animal info without constantly reloading the <samp>Data/Characters</samp> or <samp>Data/FarmAnimals</samp> asset.</li>
 
<li>Added <samp>Game1.characterData</samp> and <samp>Game1.farmAnimalData</samp> to read NPC/animal info without constantly reloading the <samp>Data/Characters</samp> or <samp>Data/FarmAnimals</samp> asset.</li>
Line 5,672: Line 5,791:  
==What's new for everything else==
 
==What's new for everything else==
 
===Buff overhaul===
 
===Buff overhaul===
 +
{{/doc status|a new doc page|done=false}}
 +
 
: ''See also: [[#Custom buffs|custom buffs]].''
 
: ''See also: [[#Custom buffs|custom buffs]].''
   Line 5,709: Line 5,830:     
===Custom audio===
 
===Custom audio===
: ''Main article: [[Modding:Audio]].''
+
{{/doc status|[[Modding:Audio]]|done=true}}
    
You can now add or edit music tracks or sound effects by editing the new <samp>Data/AudioChanges</samp> asset. New cues are added to the game's soundbank, so they can be used anywhere normal audio can be used (e.g. the <samp>Music</samp> [[Modding:Maps|map property]]). This supports <samp>.ogg</samp> and <samp>.wav</samp> files, and the vanilla audio features (e.g. randomizing audio from one ID).
 
You can now add or edit music tracks or sound effects by editing the new <samp>Data/AudioChanges</samp> asset. New cues are added to the game's soundbank, so they can be used anywhere normal audio can be used (e.g. the <samp>Music</samp> [[Modding:Maps|map property]]). This supports <samp>.ogg</samp> and <samp>.wav</samp> files, and the vanilla audio features (e.g. randomizing audio from one ID).
Line 5,716: Line 5,837:     
===Custom buffs===
 
===Custom buffs===
 +
{{/doc status|a new doc page|done=false}}
 +
 
: ''See also: [[#Buff overhaul|buff overhaul]].''
 
: ''See also: [[#Buff overhaul|buff overhaul]].''
   Line 5,782: Line 5,905:     
===Custom data fields===
 
===Custom data fields===
 +
{{/doc status|[[Modding:Common data field types#Custom fields]]|done=true}}
 +
 
Many data assets now have a <samp>CustomFields</samp> field. This is ignored by the game, but lets mods add their own data (e.g. to enable mod framework features).
 
Many data assets now have a <samp>CustomFields</samp> field. This is ignored by the game, but lets mods add their own data (e.g. to enable mod framework features).
   Line 5,826: Line 5,951:     
===Custom giant crops===
 
===Custom giant crops===
 +
{{/doc status|a new doc page|done=false}}
 +
 
You can now add/edit [[Crops#Giant Crops|giant crops]] by editing the <samp>Data/GiantCrops</samp> data asset.
 
You can now add/edit [[Crops#Giant Crops|giant crops]] by editing the <samp>Data/GiantCrops</samp> data asset.
   Line 5,895: Line 6,022:     
===Custom jukebox tracks===
 
===Custom jukebox tracks===
 +
{{/doc status|a new doc page|done=false}}
 +
 
You can now change [[jukebox]] audio tracks by editing the new <samp>Data/JukeboxTracks</samp> data asset.
 
You can now change [[jukebox]] audio tracks by editing the new <samp>Data/JukeboxTracks</samp> data asset.
   Line 5,929: Line 6,058:     
===Custom movies===
 
===Custom movies===
 +
{{/doc status|[[Modding:Movie theater data]]|done=false}}
 +
 
: ''See also: [[#Custom movie concessions|custom movie concessions]].''
 
: ''See also: [[#Custom movie concessions|custom movie concessions]].''
   Line 6,039: Line 6,170:     
===Custom wedding event===
 
===Custom wedding event===
 +
{{/doc status|a new doc page|done=false}}
 +
 
The [[Marriage#The Wedding|wedding]] event can now be changed by editing the <samp>Data\Weddings</samp> data asset, which consists of a data model with two relevant fields (listed below).
 
The [[Marriage#The Wedding|wedding]] event can now be changed by editing the <samp>Data\Weddings</samp> data asset, which consists of a data model with two relevant fields (listed below).
   Line 6,096: Line 6,229:     
===Game state queries===
 
===Game state queries===
: ''Main article: [[Modding:Game state queries]].''
+
{{/doc status|[[Modding:Game state queries]]|done=true}}
    
A ''game state query'' is a new vanilla way to specify conditions for some content like [[#Custom shops|shop data]], inspired by [[Modding:Content Patcher|Content Patcher]]'s conditions.
 
A ''game state query'' is a new vanilla way to specify conditions for some content like [[#Custom shops|shop data]], inspired by [[Modding:Content Patcher|Content Patcher]]'s conditions.
    
===Gender changes===
 
===Gender changes===
 +
{{/doc status|[[Modding:Dialogue]]|done=false}}
 +
 
* Added an [[#gender-switch|''inline gender-switch token'']] to change text depending on the player's gender. This reduces duplicate text, works in more places than the <samp>^</samp> dialogue token, works in mail and other places where <samp>^</samp> has a different meaning, and supports non-binary gender.
 
* Added an [[#gender-switch|''inline gender-switch token'']] to change text depending on the player's gender. This reduces duplicate text, works in more places than the <samp>^</samp> dialogue token, works in mail and other places where <samp>^</samp> has a different meaning, and supports non-binary gender.
 
* For C# mod authors, added a unified <samp>Gender</samp> field for players and NPCs with the possible values <samp>Male</samp>, <samp>Female</samp>, and <samp>Unspecified</samp>. This replaces <samp>Farmer.isMale</samp> and the numeric NPC gender constants. Note that vanilla still only sets players to male or female, though mods can override it.
 
* For C# mod authors, added a unified <samp>Gender</samp> field for players and NPCs with the possible values <samp>Male</samp>, <samp>Female</samp>, and <samp>Unspecified</samp>. This replaces <samp>Farmer.isMale</samp> and the numeric NPC gender constants. Note that vanilla still only sets players to male or female, though mods can override it.
Line 6,107: Line 6,242:     
===Item queries===
 
===Item queries===
: ''Main article: [[Modding:Item queries]].''
+
{{/doc status|[[Modding:Item queries]]|done=true}}
    
''Item queries'' are a new built-in way to choose one or more items dynamically, instead of specifying a single item ID. These are used in various places like [[#Custom machines|machine data]] and [[#Custom shops|shop data]].
 
''Item queries'' are a new built-in way to choose one or more items dynamically, instead of specifying a single item ID. These are used in various places like [[#Custom machines|machine data]] and [[#Custom shops|shop data]].
Line 6,120: Line 6,255:     
===Item spawn fields===
 
===Item spawn fields===
: ''Main article: [[Modding:Item queries#Item spawn fields]].''
+
{{/doc status|[[Modding:Item queries#Item spawn fields]]|done=true}}
    
Several data assets (like [[#Custom machines|machines]] and [[#Custom shops|shops]]) let you configure items to create using item queries. For consistency, these all share a set of common fields.
 
Several data assets (like [[#Custom machines|machines]] and [[#Custom shops|shops]]) let you configure items to create using item queries. For consistency, these all share a set of common fields.
    
===Color fields===
 
===Color fields===
: ''Main article: [[Modding:Common data field types#Color]].''
+
{{/doc status|[[Modding:Common data field types#Color]]|done=true}}
    
1.6 adds a standardized color format used in various data fields. This can be a color name, hexadecimal color code, or 8-bit RGB color code.
 
1.6 adds a standardized color format used in various data fields. This can be a color name, hexadecimal color code, or 8-bit RGB color code.
Line 6,140: Line 6,275:  
* Adds <samp>modData</samp> fields to the <samp>Crop</samp>, <samp>Projectile</samp>, and <samp>Quest</samp> types too.
 
* Adds <samp>modData</samp> fields to the <samp>Crop</samp>, <samp>Projectile</samp>, and <samp>Quest</samp> types too.
 
* Moves <samp>ModDataDictionary</samp> into the <samp>StardewValley.Mods</samp> namespace.
 
* Moves <samp>ModDataDictionary</samp> into the <samp>StardewValley.Mods</samp> namespace.
* Fixes <samp>Item.modData</samp> not copied when performing special equipment replacement (e.g. for the [[Copper Pan|copper pan]] work as a hat).
+
* Fixes <samp>Item.modData</samp> not copied when performing special equipment replacement (e.g. for the [[Pans|copper pan]] work as a hat).
    
===Quantity modifiers===
 
===Quantity modifiers===
 +
{{/doc status|[[Modding:Common data field types]]|done=false}}
 +
 
''Quantity modifiers'' apply dynamic changes to a numeric field in a data asset like [[#Custom shops|<samp>Data/Shops</samp>]] or [[#Custom machines|<samp>Data/Machines</samp>]]. For example, you can multiply a shop item's price or increase a machine output's quality. You can specify any number of modifiers for the same field.
 
''Quantity modifiers'' apply dynamic changes to a numeric field in a data asset like [[#Custom shops|<samp>Data/Shops</samp>]] or [[#Custom machines|<samp>Data/Machines</samp>]]. For example, you can multiply a shop item's price or increase a machine output's quality. You can specify any number of modifiers for the same field.
   Line 6,216: Line 6,353:     
===Tokenizable string format===
 
===Tokenizable string format===
 +
{{/doc status|[[Modding:Tokenizable strings]]|done=true}}
 +
 
Stardew Valley 1.6 adds ''tokenizable strings'', which support any combination of literal text and token values. That includes a set of built-in tokens like <samp>FarmName</samp>, <samp>LocalizedText</samp>, etc.
 
Stardew Valley 1.6 adds ''tokenizable strings'', which support any combination of literal text and token values. That includes a set of built-in tokens like <samp>FarmName</samp>, <samp>LocalizedText</samp>, etc.
   Line 6,233: Line 6,372:     
===[[Modding:Event data|Event]] changes===
 
===[[Modding:Event data|Event]] changes===
 +
{{/doc status|[[Modding:Event data]]|done=false}}
 +
 
====High-level changes====
 
====High-level changes====
 
* Event IDs are now [[Modding:Common data field types#Unique string ID|unique string IDs]], so mods can use a unique key instead of hoping no other mod uses the same number. Unconditional events must have an empty precondition in their key (like <samp>"Example.ModId_EventName/"</samp>) to distinguish them from forks.
 
* Event IDs are now [[Modding:Common data field types#Unique string ID|unique string IDs]], so mods can use a unique key instead of hoping no other mod uses the same number. Unconditional events must have an empty precondition in their key (like <samp>"Example.ModId_EventName/"</samp>) to distinguish them from forks.
Line 6,739: Line 6,880:     
===[[Modding:Mail data|Mail]] changes===
 
===[[Modding:Mail data|Mail]] changes===
 +
{{/doc status|[[Modding:Mail data]]|done=false}}
 +
 
<ul>
 
<ul>
 
<li>Mail can now have multiple items attached (using multiple <samp>%item</samp> commands). When the player grabs the top item, the next one will appear in the slot to grab next.</li>
 
<li>Mail can now have multiple items attached (using multiple <samp>%item</samp> commands). When the player grabs the top item, the next one will appear in the slot to grab next.</li>
Line 7,318: Line 7,461:     
====Debug commands====
 
====Debug commands====
 +
{{/doc status|[[Modding:Console commands]]|done=false}}
 +
 
<ul>
 
<ul>
 
<li>All debug commands are now quote-aware, so you can pass spaces in arguments like <code>debug build "Junimo Hut"</code>.</li>
 
<li>All debug commands are now quote-aware, so you can pass spaces in arguments like <code>debug build "Junimo Hut"</code>.</li>
Line 7,574: Line 7,719:  
| <samp>ee</samp><br /><samp>endEvent</samp>/<samp>leaveEvent</samp><br /><samp>eventOver</samp>
 
| <samp>ee</samp><br /><samp>endEvent</samp>/<samp>leaveEvent</samp><br /><samp>eventOver</samp>
 
| Replaced by the new <samp>endEvent</samp> command.
 
| Replaced by the new <samp>endEvent</samp> command.
 +
|-
 +
| <samp>everythingshop</samp>
 +
| Removed. You can get all items like <code>debug iq ALL_ITEMS</code>, or all items of a given type like <code>debug iq ALL_ITEMS (O)</code>.
 
|-
 
|-
 
| <samp>oldMineGame</samp>
 
| <samp>oldMineGame</samp>
Line 7,605: Line 7,753:     
====Quests====
 
====Quests====
 +
{{/doc status|[[Modding:Quest data]]|done=false}}
 +
 
* Quests now have string IDs, to simplify custom quest frameworks.
 
* Quests now have string IDs, to simplify custom quest frameworks.
 
* Added validation for quest data parsing.
 
* Added validation for quest data parsing.
Line 8,449: Line 8,599:     
===Event ID changes===
 
===Event ID changes===
 +
{{/doc status|[[Modding:Event data]]|done=false}}
 +
 
: ''See also: [[#String event IDs|string event IDs in what's new]].''
 
: ''See also: [[#String event IDs|string event IDs in what's new]].''
   Line 8,465: Line 8,617:     
===Monster eradication goal flag changes===
 
===Monster eradication goal flag changes===
 +
{{/doc status|a new doc page|done=false}}
 +
 
: ''See also: [[#Custom monster eradication goals|Custom monster eradication goals]].''
 
: ''See also: [[#Custom monster eradication goals|Custom monster eradication goals]].''
  
translators
8,404

edits

Navigation menu