stardew-valley-data 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
6
6
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.20.0] - 2026-03-21
9
+
10
+ ### Added
11
+
12
+ - `willyBackRoomInvitation: boolean` field added to `SavePlayer` — checks for
13
+ `"willyBackRoomInvitation"` mail flag in save file
14
+ - `parseCommunityCenter()` parser added — new `communityCenter` field on `SaveData` tracking unlock
15
+ status, bundle activation, completion, ceremony attendance, Joja route, and individual room
16
+ completions (boilerRoom, craftsRoom, pantry, fishTank, vault, bulletin)
17
+ - `SaveCommunityCenter` and `SaveCommunityCenterRooms` interfaces added to save file types
18
+
8
19
  ## [0.19.0] - 2026-03-21
9
20
 
10
21
  ### Fix
package/dist/index.d.mts CHANGED
@@ -2655,6 +2655,7 @@ interface SaveData {
2655
2655
  raccoons: SaveRaccoons;
2656
2656
  perfection: SavePerfection;
2657
2657
  mineProgress: SaveMineProgress;
2658
+ communityCenter: SaveCommunityCenter;
2658
2659
  }
2659
2660
  /** Core player profile including name, money, skills, and mastery progress. */
2660
2661
  interface SavePlayer {
@@ -2673,6 +2674,7 @@ interface SavePlayer {
2673
2674
  skills: SaveSkills;
2674
2675
  mastery: SaveMastery;
2675
2676
  toolLevels: SaveToolLevels;
2677
+ willyBackRoomInvitation: boolean;
2676
2678
  gameVersion: string;
2677
2679
  millisecondsPlayed: number;
2678
2680
  }
@@ -2916,6 +2918,24 @@ interface SavePerfection {
2916
2918
  hasGoldClock: boolean;
2917
2919
  obelisks: string[];
2918
2920
  }
2921
+ /** Community Center completion status including individual room progress. */
2922
+ interface SaveCommunityCenterRooms {
2923
+ boilerRoom: boolean;
2924
+ craftsRoom: boolean;
2925
+ pantry: boolean;
2926
+ fishTank: boolean;
2927
+ vault: boolean;
2928
+ bulletin: boolean;
2929
+ }
2930
+ /** Community Center unlock, completion, and Joja route status. */
2931
+ interface SaveCommunityCenter {
2932
+ unlocked: boolean;
2933
+ bundlesActive: boolean;
2934
+ completed: boolean;
2935
+ ceremonyAttended: boolean;
2936
+ jojaAbandoned: boolean;
2937
+ rooms: SaveCommunityCenterRooms;
2938
+ }
2919
2939
  /** Mine and Skull Cavern progress including deepest levels reached and key ownership. */
2920
2940
  interface SaveMineProgress {
2921
2941
  deepestMineLevel: number;
package/dist/index.d.ts CHANGED
@@ -2655,6 +2655,7 @@ interface SaveData {
2655
2655
  raccoons: SaveRaccoons;
2656
2656
  perfection: SavePerfection;
2657
2657
  mineProgress: SaveMineProgress;
2658
+ communityCenter: SaveCommunityCenter;
2658
2659
  }
2659
2660
  /** Core player profile including name, money, skills, and mastery progress. */
2660
2661
  interface SavePlayer {
@@ -2673,6 +2674,7 @@ interface SavePlayer {
2673
2674
  skills: SaveSkills;
2674
2675
  mastery: SaveMastery;
2675
2676
  toolLevels: SaveToolLevels;
2677
+ willyBackRoomInvitation: boolean;
2676
2678
  gameVersion: string;
2677
2679
  millisecondsPlayed: number;
2678
2680
  }
@@ -2916,6 +2918,24 @@ interface SavePerfection {
2916
2918
  hasGoldClock: boolean;
2917
2919
  obelisks: string[];
2918
2920
  }
2921
+ /** Community Center completion status including individual room progress. */
2922
+ interface SaveCommunityCenterRooms {
2923
+ boilerRoom: boolean;
2924
+ craftsRoom: boolean;
2925
+ pantry: boolean;
2926
+ fishTank: boolean;
2927
+ vault: boolean;
2928
+ bulletin: boolean;
2929
+ }
2930
+ /** Community Center unlock, completion, and Joja route status. */
2931
+ interface SaveCommunityCenter {
2932
+ unlocked: boolean;
2933
+ bundlesActive: boolean;
2934
+ completed: boolean;
2935
+ ceremonyAttended: boolean;
2936
+ jojaAbandoned: boolean;
2937
+ rooms: SaveCommunityCenterRooms;
2938
+ }
2919
2939
  /** Mine and Skull Cavern progress including deepest levels reached and key ownership. */
2920
2940
  interface SaveMineProgress {
2921
2941
  deepestMineLevel: number;
package/dist/index.js CHANGED
@@ -40885,6 +40885,25 @@ function parseBundles(root, mail) {
40885
40885
  return { rooms, isJojaRoute, isCCComplete };
40886
40886
  }
40887
40887
 
40888
+ // src/save-file/parsers/v1/community-center.ts
40889
+ function parseCommunityCenter(mail, events2) {
40890
+ return {
40891
+ unlocked: mail.has("ccDoorUnlock"),
40892
+ bundlesActive: mail.has("wizardJunimoNote"),
40893
+ completed: mail.has("ccIsComplete"),
40894
+ ceremonyAttended: events2.has("191393"),
40895
+ jojaAbandoned: mail.has("abandonedJojaMartAccessible"),
40896
+ rooms: {
40897
+ boilerRoom: mail.has("ccBoilerRoom"),
40898
+ craftsRoom: mail.has("ccCraftsRoom"),
40899
+ pantry: mail.has("ccPantry"),
40900
+ fishTank: mail.has("ccFishTank"),
40901
+ vault: mail.has("ccVault"),
40902
+ bulletin: mail.has("ccBulletin")
40903
+ }
40904
+ };
40905
+ }
40906
+
40888
40907
  // src/save-file/parsers/v1/date.ts
40889
40908
  function getStatDaysPlayed(player) {
40890
40909
  const stats = player.stats;
@@ -41280,7 +41299,7 @@ function parseToolLevels(player, root) {
41280
41299
  }
41281
41300
  return levels;
41282
41301
  }
41283
- function parsePlayer(player, root) {
41302
+ function parsePlayer(player, root, mail) {
41284
41303
  return {
41285
41304
  name: str(player.name),
41286
41305
  farmName: str(player.farmName),
@@ -41297,6 +41316,7 @@ function parsePlayer(player, root) {
41297
41316
  skills: parseSkills(player.experiencePoints?.int),
41298
41317
  mastery: parseMastery(player.stats),
41299
41318
  toolLevels: parseToolLevels(player, root),
41319
+ willyBackRoomInvitation: mail.has("willyBackRoomInvitation"),
41300
41320
  gameVersion: str(root.gameVersion),
41301
41321
  millisecondsPlayed: num(player.millisecondsPlayed)
41302
41322
  };
@@ -41492,7 +41512,7 @@ function parseWalnuts(root) {
41492
41512
 
41493
41513
  // src/save-file/parser-registry.ts
41494
41514
  var v1 = (ctx) => ({
41495
- player: parsePlayer(ctx.player, ctx.root),
41515
+ player: parsePlayer(ctx.player, ctx.root, ctx.mailSet),
41496
41516
  farm: { type: ctx.root.whichFarm, name: ctx.player.farmName },
41497
41517
  date: parseDate(ctx.player, ctx.root),
41498
41518
  inventory: parseInventory(ctx.player.items),
@@ -41523,7 +41543,8 @@ var v1 = (ctx) => ({
41523
41543
  powers: parsePowers(ctx.mailSet, ctx.eventsSet),
41524
41544
  raccoons: parseRaccoons(ctx.root, ctx.mailSet),
41525
41545
  perfection: parsePerfection(ctx.root),
41526
- mineProgress: parseMineProgress(ctx.player, ctx.root, ctx.mailSet)
41546
+ mineProgress: parseMineProgress(ctx.player, ctx.root, ctx.mailSet),
41547
+ communityCenter: parseCommunityCenter(ctx.mailSet, ctx.eventsSet)
41527
41548
  });
41528
41549
  var PARSER_SETS = {
41529
41550
  1: v1