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]].'' |
| | | |