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 564: |
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 776: |
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 823: |
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 907: |
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 914: |
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,064: |
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,110: |
Line 1,119: |
| | | |
| ===Custom museum donations & rewards=== | | ===Custom museum donations & rewards=== |
| + | {{/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. | | You can now add/edit the items which the [[museum]] gives back in rewards through the new <samp>Data/MuseumRewards</samp> data asset. |
| | | |
Line 1,213: |
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,372: |
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,579: |
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,635: |
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,694: |
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,892: |
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,125: |
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,138: |
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,152: |
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,367: |
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,594: |
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,599: |
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,828: |
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,031: |
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,118: |
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,123: |
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,223: |
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,294: |
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,301: |
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,315: |
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,387: |
Line 3,435: |
| | | |
| ===Other map property changes=== | | ===Other map property changes=== |
| + | {{/doc status|[[Modding:Maps]]|done=false}} |
| + | |
| {| class="wikitable" | | {| class="wikitable" |
| |- | | |- |
Line 3,412: |
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,520: |
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,727: |
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,214: |
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,219: |
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,301: |
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,850: |
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,899: |
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 5,194: |
Line 5,260: |
| | | |
| ===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,246: |
Line 5,314: |
| | | |
| ===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,316: |
Line 5,386: |
| | | |
| ===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,535: |
Line 5,609: |
| | | |
| ===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,553: |
Line 5,629: |
| | | |
| ===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,674: |
Line 5,752: |
| ==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,711: |
Line 5,791: |
| | | |
| ===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,718: |
Line 5,798: |
| | | |
| ===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,784: |
Line 5,866: |
| | | |
| ===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,828: |
Line 5,912: |
| | | |
| ===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,897: |
Line 5,983: |
| | | |
| ===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,931: |
Line 6,019: |
| | | |
| ===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,041: |
Line 6,131: |
| | | |
| ===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,098: |
Line 6,190: |
| | | |
| ===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,109: |
Line 6,203: |
| | | |
| ===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,122: |
Line 6,216: |
| | | |
| ===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,145: |
Line 6,239: |
| | | |
| ===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,218: |
Line 6,314: |
| | | |
| ===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,235: |
Line 6,333: |
| | | |
| ===[[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,741: |
Line 6,841: |
| | | |
| ===[[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,320: |
Line 7,422: |
| | | |
| ====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,610: |
Line 7,714: |
| | | |
| ====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,454: |
Line 8,560: |
| | | |
| ===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,470: |
Line 8,578: |
| | | |
| ===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]].'' |
| | | |