isaacscript-common 15.3.1 → 15.3.2

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/dist/index.d.ts CHANGED
@@ -10690,7 +10690,7 @@ declare class ModdedElementSets extends Feature {
10690
10690
  }
10691
10691
 
10692
10692
  /**
10693
- * Helper class for mods that wants to represent their individual features as classes. Extend your
10693
+ * Helper class for mods that want to represent their individual features as classes. Extend your
10694
10694
  * mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
10695
10695
  * that automatically subscribe to callbacks.
10696
10696
  *
@@ -10715,6 +10715,9 @@ declare class ModdedElementSets extends Feature {
10715
10715
  * }
10716
10716
  * ```
10717
10717
  *
10718
+ * When instantiating a feature class, you must pass your upgraded mod as the first argument to the
10719
+ * constructor.
10720
+ *
10718
10721
  * In almost all cases, you will want the callback functions to be immediately subscribed after
10719
10722
  * instantiating the class. However, if this is not the case, you can pass `false` as the optional
10720
10723
  * second argument to the constructor.
@@ -12440,6 +12443,7 @@ export declare function round(num: float, numDecimalPlaces?: number): float;
12440
12443
  export declare function runDeepCopyTests(): void;
12441
12444
 
12442
12445
  declare class RunInNFrames extends Feature {
12446
+ vConditionalFunc: () => boolean;
12443
12447
  private postUpdate;
12444
12448
  private postRender;
12445
12449
  /**
@@ -12677,6 +12681,8 @@ declare class SaveDataManager extends Feature {
12677
12681
  * manage them for you. (See below for an example.)
12678
12682
  *
12679
12683
  * In order to use this function, you must upgrade your mod with `ISCFeature.SAVE_DATA_MANAGER`.
12684
+ * (Upgrade your mod before registering any of your own callbacks so that the save data manager
12685
+ * will run before any of your code does.)
12680
12686
  *
12681
12687
  * The save data manager is meant to be called once for each feature of your mod. In other words,
12682
12688
  * you should not put all of the data for your mod on the same object. Instead, scope your
@@ -12733,10 +12739,6 @@ declare class SaveDataManager extends Feature {
12733
12739
  * supported. For the specific things that are supported, see the documentation for the `deepCopy`
12734
12740
  * helper function.
12735
12741
  *
12736
- * Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
12737
- * your mod before registering any of your own callbacks so that the save data manager will run
12738
- * before any of your code does.)
12739
- *
12740
12742
  * If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
12741
12743
  * the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
12742
12744
  * data manager cannot do this on its own because it cannot know when your mod features are
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 15.3.1
3
+ isaacscript-common 15.3.2
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -30390,6 +30390,7 @@ __TS__ClassExtends(RunInNFrames, Feature)
30390
30390
  function RunInNFrames.prototype.____constructor(self)
30391
30391
  Feature.prototype.____constructor(self)
30392
30392
  self.v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}, intervalGameFunctionTuples = {}, intervalRenderFunctionTuples = {}}}
30393
+ self.vConditionalFunc = function() return false end
30393
30394
  self.postUpdate = function()
30394
30395
  local gameFrameCount = game:GetFrameCount()
30395
30396
  checkExecuteQueuedFunctions(nil, gameFrameCount, self.v.run.queuedGameFunctionTuples)
@@ -2,7 +2,7 @@ import { ModUpgradedBase } from "./ModUpgradedBase";
2
2
  export declare const ADD_CALLBACK_ARGS_KEY = "__addCallbackArgs";
3
3
  export declare const ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs";
4
4
  /**
5
- * Helper class for mods that wants to represent their individual features as classes. Extend your
5
+ * Helper class for mods that want to represent their individual features as classes. Extend your
6
6
  * mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
7
7
  * that automatically subscribe to callbacks.
8
8
  *
@@ -27,6 +27,9 @@ export declare const ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs";
27
27
  * }
28
28
  * ```
29
29
  *
30
+ * When instantiating a feature class, you must pass your upgraded mod as the first argument to the
31
+ * constructor.
32
+ *
30
33
  * In almost all cases, you will want the callback functions to be immediately subscribed after
31
34
  * instantiating the class. However, if this is not the case, you can pass `false` as the optional
32
35
  * second argument to the constructor.
@@ -1 +1 @@
1
- {"version":3,"file":"ModFeature.d.ts","sourceRoot":"","sources":["../../../src/classes/ModFeature.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAatE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,GAAG,EAAE,eAAe,EAAE,IAAI,UAAO;IAQ7C;;;;;OAKG;IACI,IAAI,CAAC,IAAI,UAAO,GAAG,IAAI;IAqB9B;;;;;;OAMG;IACI,MAAM,IAAI,IAAI;CAGtB"}
1
+ {"version":3,"file":"ModFeature.d.ts","sourceRoot":"","sources":["../../../src/classes/ModFeature.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AAatE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;gBAEhB,GAAG,EAAE,eAAe,EAAE,IAAI,UAAO;IAQ7C;;;;;OAKG;IACI,IAAI,CAAC,IAAI,UAAO,GAAG,IAAI;IAqB9B;;;;;;OAMG;IACI,MAAM,IAAI,IAAI;CAGtB"}
@@ -143,7 +143,7 @@ ____exports.ADD_CALLBACK_ARGS_KEY = "__addCallbackArgs"
143
143
  ____exports.ADD_CALLBACK_CUSTOM_ARGS_KEY = "__addCallbackCustomArgs"
144
144
  WRAPPED_CALLBACK_METHODS_KEY = "__wrappedCallbackMethods"
145
145
  WRAPPED_CUSTOM_CALLBACK_METHODS_KEY = "__wrappedCustomCallbacksMethods"
146
- --- Helper class for mods that wants to represent their individual features as classes. Extend your
146
+ --- Helper class for mods that want to represent their individual features as classes. Extend your
147
147
  -- mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
148
148
  -- that automatically subscribe to callbacks.
149
149
  --
@@ -168,6 +168,9 @@ WRAPPED_CUSTOM_CALLBACK_METHODS_KEY = "__wrappedCustomCallbacksMethods"
168
168
  -- }
169
169
  -- ```
170
170
  --
171
+ -- When instantiating a feature class, you must pass your upgraded mod as the first argument to the
172
+ -- constructor.
173
+ --
171
174
  -- In almost all cases, you will want the callback functions to be immediately subscribed after
172
175
  -- instantiating the class. However, if this is not the case, you can pass `false` as the optional
173
176
  -- second argument to the constructor.
@@ -1,6 +1,7 @@
1
1
  import { PlayerType } from "isaac-typescript-definitions";
2
2
  import { Feature } from "../../private/Feature";
3
3
  export declare class RunInNFrames extends Feature {
4
+ vConditionalFunc: () => boolean;
4
5
  private postUpdate;
5
6
  private postRender;
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"RunInNFrames.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/RunInNFrames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAgBhD,qBAAa,YAAa,SAAQ,OAAO;IAuBvC,OAAO,CAAC,UAAU,CAWhB;IAGF,OAAO,CAAC,UAAU,CAWhB;IAEF;;;;;;;;OAQG;IAEI,sBAAsB,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI;IAM3D;;;;;;;;;;;OAWG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAOhE;;;;;;;;;;;OAWG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI;IAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C;;;;;;;;;OASG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjD;;;;;;;;;;;;;;;;;OAiBG;IAEI,qBAAqB,CAC1B,IAAI,EAAE,MAAM,OAAO,EACnB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,OAAO,GACtB,IAAI;IAWP;;;;;;;;;;;;;;;;;OAiBG;IAEI,uBAAuB,CAC5B,IAAI,EAAE,MAAM,OAAO,EACnB,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,OAAO,GACtB,IAAI;CAcR"}
1
+ {"version":3,"file":"RunInNFrames.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/RunInNFrames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAgBhD,qBAAa,YAAa,SAAQ,OAAO;IAavB,gBAAgB,QAAO,OAAO,CAAU;IAaxD,OAAO,CAAC,UAAU,CAWhB;IAGF,OAAO,CAAC,UAAU,CAWhB;IAEF;;;;;;;;OAQG;IAEI,sBAAsB,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI;IAM3D;;;;;;;;;;;OAWG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAOhE;;;;;;;;;;;OAWG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI;IAOpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IAEI,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C;;;;;;;;;OASG;IAEI,kBAAkB,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjD;;;;;;;;;;;;;;;;;OAiBG;IAEI,qBAAqB,CAC1B,IAAI,EAAE,MAAM,OAAO,EACnB,UAAU,EAAE,GAAG,EACf,cAAc,EAAE,OAAO,GACtB,IAAI;IAWP;;;;;;;;;;;;;;;;;OAiBG;IAEI,uBAAuB,CAC5B,IAAI,EAAE,MAAM,OAAO,EACnB,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,OAAO,GACtB,IAAI;CAcR"}
@@ -59,6 +59,7 @@ __TS__ClassExtends(RunInNFrames, Feature)
59
59
  function RunInNFrames.prototype.____constructor(self)
60
60
  Feature.prototype.____constructor(self)
61
61
  self.v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}, intervalGameFunctionTuples = {}, intervalRenderFunctionTuples = {}}}
62
+ self.vConditionalFunc = function() return false end
62
63
  self.postUpdate = function()
63
64
  local gameFrameCount = game:GetFrameCount()
64
65
  checkExecuteQueuedFunctions(nil, gameFrameCount, self.v.run.queuedGameFunctionTuples)
@@ -54,6 +54,8 @@ export declare class SaveDataManager extends Feature {
54
54
  * manage them for you. (See below for an example.)
55
55
  *
56
56
  * In order to use this function, you must upgrade your mod with `ISCFeature.SAVE_DATA_MANAGER`.
57
+ * (Upgrade your mod before registering any of your own callbacks so that the save data manager
58
+ * will run before any of your code does.)
57
59
  *
58
60
  * The save data manager is meant to be called once for each feature of your mod. In other words,
59
61
  * you should not put all of the data for your mod on the same object. Instead, scope your
@@ -110,10 +112,6 @@ export declare class SaveDataManager extends Feature {
110
112
  * supported. For the specific things that are supported, see the documentation for the `deepCopy`
111
113
  * helper function.
112
114
  *
113
- * Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
114
- * your mod before registering any of your own callbacks so that the save data manager will run
115
- * before any of your code does.)
116
- *
117
115
  * If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
118
116
  * the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
119
117
  * data manager cannot do this on its own because it cannot know when your mod features are
@@ -1 +1 @@
1
- {"version":3,"file":"SaveDataManager.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/SaveDataManager.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAsBhD,qBAAa,eAAgB,SAAQ,OAAO;IAC1C;;;OAGG;IACH,OAAO,CAAC,GAAG,CAAM;IAEjB;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAkC;IAErD;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAkC;IAE7D;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAuC;IAEzE;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B,CAAkC;IAErE;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAkC;IAG3D,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qCAAqC,CAAS;IAyBtD,OAAO,CAAC,2BAA2B,CAUjC;IAGF,OAAO,CAAC,cAAc,CA0BpB;IAGF,OAAO,CAAC,WAAW,CAUjB;IAGF,OAAO,CAAC,YAAY,CAYlB;IAGF,OAAO,CAAC,gBAAgB,CAuBtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmGG;IACI,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAC3C,GAAG,EAAE,MAAM,EAAE,qEAAqE;IAClF,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,EACnC,eAAe,CAAC,EAAE,MAAM,OAAO,GAC9B,IAAI;IACA,eAAe,CACpB,GAAG,EAAE,MAAM,EAAE,kEAAkE;IAC/E,CAAC,EAAE,QAAQ,EACX,eAAe,EAAE,KAAK,GACrB,IAAI;IAkDP;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAgBxC;;;;;;;;;OASG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;OAMG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;;OAOG;IAEI,wBAAwB,IAAI,IAAI;IAIvC;;;;;;;;;;;OAWG;IAEI,4BAA4B,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI;IAcrE;;;;;OAKG;IAEI,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAoB/C;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEI,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,GAAG,IAAI;CAqB5E"}
1
+ {"version":3,"file":"SaveDataManager.d.ts","sourceRoot":"","sources":["../../../../../src/classes/features/other/SaveDataManager.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAsBhD,qBAAa,eAAgB,SAAQ,OAAO;IAC1C;;;OAGG;IACH,OAAO,CAAC,GAAG,CAAM;IAEjB;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAAkC;IAErD;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAkC;IAE7D;;;OAGG;IACH,OAAO,CAAC,0BAA0B,CAAuC;IAEzE;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B,CAAkC;IAErE;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAkC;IAG3D,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qCAAqC,CAAS;IAyBtD,OAAO,CAAC,2BAA2B,CAUjC;IAGF,OAAO,CAAC,cAAc,CA0BpB;IAGF,OAAO,CAAC,WAAW,CAUjB;IAGF,OAAO,CAAC,YAAY,CAYlB;IAGF,OAAO,CAAC,gBAAgB,CAuBtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiGG;IACI,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAC3C,GAAG,EAAE,MAAM,EAAE,qEAAqE;IAClF,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,EACnC,eAAe,CAAC,EAAE,MAAM,OAAO,GAC9B,IAAI;IACA,eAAe,CACpB,GAAG,EAAE,MAAM,EAAE,kEAAkE;IAC/E,CAAC,EAAE,QAAQ,EACX,eAAe,EAAE,KAAK,GACrB,IAAI;IAkDP;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAgBxC;;;;;;;;;OASG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;OAMG;IAEI,mBAAmB,IAAI,IAAI;IAIlC;;;;;;;OAOG;IAEI,wBAAwB,IAAI,IAAI;IAIvC;;;;;;;;;;;OAWG;IAEI,4BAA4B,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI;IAcrE;;;;;OAKG;IAEI,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAoB/C;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEI,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,GAAG,IAAI;CAqB5E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "15.3.1",
3
+ "version": "15.3.2",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -26,7 +26,7 @@ type ModFeatureConstructor = TSTLClassMetatable["constructor"] & {
26
26
  };
27
27
 
28
28
  /**
29
- * Helper class for mods that wants to represent their individual features as classes. Extend your
29
+ * Helper class for mods that want to represent their individual features as classes. Extend your
30
30
  * mod features from this class in order to enable the `@Callback` and `@CustomCallback` decorators
31
31
  * that automatically subscribe to callbacks.
32
32
  *
@@ -51,6 +51,9 @@ type ModFeatureConstructor = TSTLClassMetatable["constructor"] & {
51
51
  * }
52
52
  * ```
53
53
  *
54
+ * When instantiating a feature class, you must pass your upgraded mod as the first argument to the
55
+ * constructor.
56
+ *
54
57
  * In almost all cases, you will want the callback functions to be immediately subscribed after
55
58
  * instantiating the class. However, if this is not the case, you can pass `false` as the optional
56
59
  * second argument to the constructor.
@@ -31,6 +31,9 @@ export class RunInNFrames extends Feature {
31
31
  },
32
32
  };
33
33
 
34
+ // eslint-disable-next-line class-methods-use-this
35
+ public override vConditionalFunc = (): boolean => false;
36
+
34
37
  /** @internal */
35
38
  constructor() {
36
39
  super();
@@ -210,6 +210,8 @@ export class SaveDataManager extends Feature {
210
210
  * manage them for you. (See below for an example.)
211
211
  *
212
212
  * In order to use this function, you must upgrade your mod with `ISCFeature.SAVE_DATA_MANAGER`.
213
+ * (Upgrade your mod before registering any of your own callbacks so that the save data manager
214
+ * will run before any of your code does.)
213
215
  *
214
216
  * The save data manager is meant to be called once for each feature of your mod. In other words,
215
217
  * you should not put all of the data for your mod on the same object. Instead, scope your
@@ -266,10 +268,6 @@ export class SaveDataManager extends Feature {
266
268
  * supported. For the specific things that are supported, see the documentation for the `deepCopy`
267
269
  * helper function.
268
270
  *
269
- * Note that before using the save data manager, you must call the `upgradeMod` function. (Upgrade
270
- * your mod before registering any of your own callbacks so that the save data manager will run
271
- * before any of your code does.)
272
- *
273
271
  * If you want the save data manager to load data before the `POST_PLAYER_INIT` callback (i.e. in
274
272
  * the main menu), then you should explicitly call the `saveDataManagerLoad` function. (The save
275
273
  * data manager cannot do this on its own because it cannot know when your mod features are