stardew-valley-data 0.26.0 → 0.27.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,19 @@ 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.27.0] - 2026-03-22
9
+
10
+ ### Added
11
+
12
+ - `data/joja-development.json` — 5 Joja Community Development projects with `id`, `name`,
13
+ `description`, `cost`, `ccEquivalent` (maps to Community Center room mail flag), and `order`:
14
+ Greenhouse (35,000g), Bridge (25,000g), Panning (20,000g), Minecarts (15,000g), Bus (40,000g)
15
+ - `parseJoja()` parser added — new `joja` field on `SaveData` tracking `isMember` (from `JojaMember`
16
+ mail flag), `completed` (event `502261`), and `developments[]` (array of `{ id, purchased }`
17
+ driven by `joja-development.json`)
18
+ - `SaveJoja` and `SaveJojaDevelopment` interfaces added to save file types
19
+ - `images/shop/Joja Development Form.png` downloaded (640×288)
20
+
8
21
  ## [0.26.0] - 2026-03-22
9
22
 
10
23
  ### Added
@@ -0,0 +1,42 @@
1
+ [
2
+ {
3
+ "id": "jojaPantry",
4
+ "name": "Greenhouse",
5
+ "description": "Repairs the old ruins on the farm, turning it into a greenhouse.",
6
+ "cost": 35000,
7
+ "ccEquivalent": "ccPantry",
8
+ "order": 0
9
+ },
10
+ {
11
+ "id": "jojaCraftsRoom",
12
+ "name": "Bridge",
13
+ "description": "Repairs the broken bridge east of the Mines, enabling access to the Quarry.",
14
+ "cost": 25000,
15
+ "ccEquivalent": "ccCraftsRoom",
16
+ "order": 1
17
+ },
18
+ {
19
+ "id": "jojaFishTank",
20
+ "name": "Panning",
21
+ "description": "Removes the glimmering boulder near the mine entrance, enabling copper panning.",
22
+ "cost": 20000,
23
+ "ccEquivalent": "ccFishTank",
24
+ "order": 2
25
+ },
26
+ {
27
+ "id": "jojaBoilerRoom",
28
+ "name": "Minecarts",
29
+ "description": "Repairs the minecart system between the Bus Stop, the Mountains, and Pelican Town.",
30
+ "cost": 15000,
31
+ "ccEquivalent": "ccBoilerRoom",
32
+ "order": 3
33
+ },
34
+ {
35
+ "id": "jojaVault",
36
+ "name": "Bus",
37
+ "description": "Repairs the bus that runs to the Calico Desert.",
38
+ "cost": 40000,
39
+ "ccEquivalent": "ccVault",
40
+ "order": 4
41
+ }
42
+ ]
package/dist/index.d.mts CHANGED
@@ -2676,6 +2676,7 @@ interface SaveData {
2676
2676
  perfection: SavePerfection;
2677
2677
  mineProgress: SaveMineProgress;
2678
2678
  communityCenter: SaveCommunityCenter;
2679
+ joja: SaveJoja;
2679
2680
  }
2680
2681
  /** Core player profile including name, money, skills, and mastery progress. */
2681
2682
  interface SavePlayer {
@@ -2962,6 +2963,17 @@ interface SaveCommunityCenter {
2962
2963
  jojaAbandoned: boolean;
2963
2964
  rooms: SaveCommunityCenterRooms;
2964
2965
  }
2966
+ /** A single Joja development project with purchase status. */
2967
+ interface SaveJojaDevelopment {
2968
+ id: string;
2969
+ purchased: boolean;
2970
+ }
2971
+ /** Joja membership, development project completion, and route status. */
2972
+ interface SaveJoja {
2973
+ isMember: boolean;
2974
+ completed: boolean;
2975
+ developments: SaveJojaDevelopment[];
2976
+ }
2965
2977
  /** Mine and Skull Cavern progress including deepest levels reached and key ownership. */
2966
2978
  interface SaveMineProgress {
2967
2979
  deepestMineLevel: number;
package/dist/index.d.ts CHANGED
@@ -2676,6 +2676,7 @@ interface SaveData {
2676
2676
  perfection: SavePerfection;
2677
2677
  mineProgress: SaveMineProgress;
2678
2678
  communityCenter: SaveCommunityCenter;
2679
+ joja: SaveJoja;
2679
2680
  }
2680
2681
  /** Core player profile including name, money, skills, and mastery progress. */
2681
2682
  interface SavePlayer {
@@ -2962,6 +2963,17 @@ interface SaveCommunityCenter {
2962
2963
  jojaAbandoned: boolean;
2963
2964
  rooms: SaveCommunityCenterRooms;
2964
2965
  }
2966
+ /** A single Joja development project with purchase status. */
2967
+ interface SaveJojaDevelopment {
2968
+ id: string;
2969
+ purchased: boolean;
2970
+ }
2971
+ /** Joja membership, development project completion, and route status. */
2972
+ interface SaveJoja {
2973
+ isMember: boolean;
2974
+ completed: boolean;
2975
+ developments: SaveJojaDevelopment[];
2976
+ }
2965
2977
  /** Mine and Skull Cavern progress including deepest levels reached and key ownership. */
2966
2978
  interface SaveMineProgress {
2967
2979
  deepestMineLevel: number;
package/dist/index.js CHANGED
@@ -41233,6 +41233,63 @@ function parseIslandUpgrades(mail) {
41233
41233
  }));
41234
41234
  }
41235
41235
 
41236
+ // data/joja-development.json
41237
+ var joja_development_default = [
41238
+ {
41239
+ id: "jojaPantry",
41240
+ name: "Greenhouse",
41241
+ description: "Repairs the old ruins on the farm, turning it into a greenhouse.",
41242
+ cost: 35e3,
41243
+ ccEquivalent: "ccPantry",
41244
+ order: 0
41245
+ },
41246
+ {
41247
+ id: "jojaCraftsRoom",
41248
+ name: "Bridge",
41249
+ description: "Repairs the broken bridge east of the Mines, enabling access to the Quarry.",
41250
+ cost: 25e3,
41251
+ ccEquivalent: "ccCraftsRoom",
41252
+ order: 1
41253
+ },
41254
+ {
41255
+ id: "jojaFishTank",
41256
+ name: "Panning",
41257
+ description: "Removes the glimmering boulder near the mine entrance, enabling copper panning.",
41258
+ cost: 2e4,
41259
+ ccEquivalent: "ccFishTank",
41260
+ order: 2
41261
+ },
41262
+ {
41263
+ id: "jojaBoilerRoom",
41264
+ name: "Minecarts",
41265
+ description: "Repairs the minecart system between the Bus Stop, the Mountains, and Pelican Town.",
41266
+ cost: 15e3,
41267
+ ccEquivalent: "ccBoilerRoom",
41268
+ order: 3
41269
+ },
41270
+ {
41271
+ id: "jojaVault",
41272
+ name: "Bus",
41273
+ description: "Repairs the bus that runs to the Calico Desert.",
41274
+ cost: 4e4,
41275
+ ccEquivalent: "ccVault",
41276
+ order: 4
41277
+ }
41278
+ ];
41279
+
41280
+ // src/save-file/parsers/v1/joja.ts
41281
+ var DEVELOPMENT_IDS = joja_development_default.map((d) => d.id);
41282
+ function parseJoja(mail, events2) {
41283
+ return {
41284
+ isMember: mail.has("JojaMember"),
41285
+ completed: events2.has("502261"),
41286
+ developments: DEVELOPMENT_IDS.map((id) => ({
41287
+ id,
41288
+ purchased: mail.has(id)
41289
+ }))
41290
+ };
41291
+ }
41292
+
41236
41293
  // src/save-file/parsers/v1/mail.ts
41237
41294
  var QI_ORDER_IDS = new Set(
41238
41295
  special_orders_default.filter((o) => o.type === "qi").map((o) => o.id)
@@ -41726,7 +41783,8 @@ var v1 = (ctx) => ({
41726
41783
  raccoons: parseRaccoons(ctx.root, ctx.mailSet),
41727
41784
  perfection: parsePerfection(ctx.root),
41728
41785
  mineProgress: parseMineProgress(ctx.player, ctx.root, ctx.mailSet),
41729
- communityCenter: parseCommunityCenter(ctx.mailSet, ctx.eventsSet)
41786
+ communityCenter: parseCommunityCenter(ctx.mailSet, ctx.eventsSet),
41787
+ joja: parseJoja(ctx.mailSet, ctx.eventsSet)
41730
41788
  });
41731
41789
  var PARSER_SETS = {
41732
41790
  1: v1