pw-js-world 0.4.3 → 0.4.4-dev.22e78f4

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/esm/Block.js CHANGED
@@ -1,80 +1,93 @@
1
- import BufferReader from "./BufferReader.js";
2
1
  import { PWApiClient } from "pw-js-api";
3
2
  import { MissingBlockError } from "./util/Error.js";
3
+ import { compareObjs, listedFieldTypeToGameType } from "./util/Misc.js";
4
4
  export default class Block {
5
5
  constructor(bId, args) {
6
- this.args = [];
6
+ /**
7
+ * NOTE as of October 2025, this is an object NOT an array.
8
+ *
9
+ * Stores the arguments
10
+ */
11
+ this.args = {};
7
12
  if (typeof bId === "number")
8
13
  this.bId = bId;
9
14
  else {
10
15
  this.bId = Block.getIdByName(bId);
11
16
  }
12
- if (args)
13
- this.args = args;
17
+ if (args) {
18
+ // LEGACY SUPPORT
19
+ if (Array.isArray(args)) {
20
+ args = Block.getArgsAsFields(this);
21
+ } // else {
22
+ const keys = Object.keys(args);
23
+ if (keys.length > 0) {
24
+ for (let i = 0, ken = keys.length; i < ken; i++) {
25
+ const arg = args[keys[i]];
26
+ const val = arg.value;
27
+ switch (arg.value.case) {
28
+ default:
29
+ // TODO: error handling?
30
+ case "boolValue":
31
+ case "byteArrayValue":
32
+ case "stringValue":
33
+ case "uint32Value":
34
+ case "int32Value":
35
+ this.args[keys[i]] = val.value;
36
+ }
37
+ }
38
+ }
39
+ //}
40
+ }
14
41
  }
15
42
  /**
16
- * I mean... Just use .args.length !== 0 to see if it has args.
17
- *
18
- * But anyway, this will return true if there is at least one args, otherwise false.
43
+ * True if there is at least one argument, otherwise false.
19
44
  */
20
45
  hasArgs() {
21
- return this.args.length !== 0;
22
- }
23
- /**
24
- * For helper.
25
- *
26
- * This is in Block class for organisation.
27
- *
28
- * This will deserialise by using the reader to get the block ID then retrieve the args, if applicable.
29
- */
30
- static deserialize(reader) {
31
- return new Block(reader.readUInt32LE()).deserializeArgs(reader);
46
+ return Object.keys(this.args).length > 0;
32
47
  }
33
- deserializeArgs(reader, flag = false) {
34
- var _a;
35
- const format = Block.getArgTypesByBlockId(this.bId); //(BlockArgsHeadings as any)[this.name];
36
- for (let i = 0; i < ((_a = format === null || format === void 0 ? void 0 : format.length) !== null && _a !== void 0 ? _a : 0); i++) {
37
- if (flag) {
38
- reader.expectUInt8(format[i]);
39
- }
40
- this.args[i] = reader.read(format[i], !flag);
48
+ static getArgsAsFields(bId, args) {
49
+ if (bId instanceof Block) {
50
+ args = bId.args;
51
+ bId = bId.bId;
41
52
  }
42
- return this;
43
- }
44
- /**
45
- * For helper.
46
- *
47
- * This is in Block class for organisation.
48
- */
49
- static deserializeArgs(reader) {
50
- // const args =
51
- return reader.deserialize();
52
- // for (let i = 0; i < (format?.length ?? 0); i++) {
53
- // if (flag) {
54
- // reader.expectUInt8(format[i]);
55
- // }
56
- // args[i] = reader.read(format[i], !flag);
57
- // }
58
- // return args;
53
+ if (args === undefined)
54
+ return {};
55
+ const fields = Block.getFieldsByBlockId(bId);
56
+ const obj = {};
57
+ for (let i = 0, len = fields.length; i < len; i++) {
58
+ const f = fields[i];
59
+ if (f.Required === true && args[f.Name] === undefined)
60
+ throw Error(`Missing argument: ${f.Name} (Type: ${f.Type})`);
61
+ else if (f.Required === false && args[f.Name] === undefined)
62
+ continue;
63
+ obj[f.Name] = {
64
+ value: {
65
+ case: listedFieldTypeToGameType(f.Type),
66
+ value: args[f.Name]
67
+ }
68
+ };
69
+ }
70
+ return obj;
59
71
  }
60
- static serializeArgs(bId, args, options) {
61
- options || (options = {
62
- endian: "little",
63
- writeId: true,
64
- readTypeByte: false,
65
- });
66
- const buffer = [];
67
- if (options.writeId) {
68
- const idBuffer = Buffer.alloc(4);
69
- idBuffer.writeUInt32LE(bId);
70
- buffer.push(idBuffer);
72
+ static getArgsAsArray(bId, args) {
73
+ if (bId instanceof Block) {
74
+ args = bId.args;
75
+ bId = bId.bId;
71
76
  }
72
- const blockData = Block.getArgTypesByBlockId(bId);
73
- for (let i = 0, len = blockData.length; i < len; i++) {
74
- const entry = BufferReader.Dynamic(blockData[i], args[i]);
75
- buffer.push(entry);
77
+ if (args === undefined)
78
+ return [];
79
+ const arr = [];
80
+ const fields = Block.getFieldsByBlockId(bId);
81
+ for (let i = 0, len = fields.length; i < len; i++) {
82
+ const f = fields[i];
83
+ const val = args[f.Name];
84
+ if (f.Required === true && val === undefined)
85
+ throw Error(`Missing argument: ${f.Name} (Type: ${f.Type})`);
86
+ else if (f.Required === false && args[f.Name] === undefined)
87
+ arr.push(undefined);
88
+ arr.push(args[fields[i].Name]);
76
89
  }
77
- return Buffer.concat(buffer);
90
+ return arr;
78
91
  }
79
92
  toPacket(pos, y, layer) {
80
93
  if (typeof pos === "number") {
@@ -90,7 +103,8 @@ export default class Block {
90
103
  blockId: this.bId,
91
104
  layer,
92
105
  positions: pos,
93
- extraFields: Block.serializeArgs(this.bId, this.args, { endian: "big", writeId: false, readTypeByte: true })
106
+ fields: Block.getArgsAsFields(this),
107
+ // extraFields: Block.serializeArgs(this.bId, this.args, { endian: "big", writeId: false, readTypeByte: true })
94
108
  };
95
109
  }
96
110
  /**
@@ -111,7 +125,13 @@ export default class Block {
111
125
  clone(obj = false) {
112
126
  if (obj === true)
113
127
  return { bId: this.bId, args: this.args, name: this.name };
114
- return new Block(this.bId, this.args);
128
+ const b = new Block(this.bId);
129
+ b.args = this.args;
130
+ return b;
131
+ }
132
+ compareTo(b) {
133
+ return this.bId === b.bId
134
+ && compareObjs(this.args, b.args);
115
135
  }
116
136
  /**
117
137
  * This can be convenient as it will always return the ID if it exists, and it will throw an error if it doesn't.
@@ -123,7 +143,7 @@ export default class Block {
123
143
  */
124
144
  static getIdByName(paletteId) {
125
145
  var _a;
126
- const block = (_a = PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId];
146
+ const block = (_a = PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId.toUpperCase()];
127
147
  if (block === undefined)
128
148
  throw new MissingBlockError("Current block data is missing, run Api#listBlocks first?", paletteId);
129
149
  return block.Id;
@@ -144,20 +164,20 @@ export default class Block {
144
164
  return block.PaletteId.toUpperCase();
145
165
  }
146
166
  /**
147
- * Returns the arg types for that block by given block ID.
167
+ * Returns the block fields for that block by given block ID.
148
168
  *
149
169
  * If a block don't have args, it will return an empty array.
150
170
  *
151
171
  * If the block don't exist, it may throw an exception.
152
172
  */
153
- static getArgTypesByBlockId(blockId) {
173
+ static getFieldsByBlockId(blockId) {
154
174
  var _a, _b;
155
- return (_b = (_a = PWApiClient.listBlocks) === null || _a === void 0 ? void 0 : _a[blockId].BlockDataArgs) !== null && _b !== void 0 ? _b : [];
175
+ return (_b = (_a = PWApiClient.listBlocks) === null || _a === void 0 ? void 0 : _a[blockId].Fields) !== null && _b !== void 0 ? _b : [];
156
176
  // const block = PWApiClient.listBlocks?.[blockId];
157
177
  // return block ? MissingBlockData[block?.PaletteId.toUpperCase()] ?? (block.BlockDataArgs) as ComponentTypeHeader[] ?? [] : [];
158
178
  }
159
179
  /**
160
- * Returns the arg types for that block by given palette ID (full upper case).
180
+ * Returns the block fields for that block by given palette ID (full upper case).
161
181
  *
162
182
  * For eg "EMPTY" or "SIGN_GOLD"
163
183
  *
@@ -165,9 +185,9 @@ export default class Block {
165
185
  *
166
186
  * If the block don't exist, it may throw an exception.
167
187
  */
168
- static getArgTypesByPaletteId(paletteId) {
188
+ static getFieldsByPaletteId(paletteId) {
169
189
  var _a, _b;
170
- return (_b = (_a = PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId].BlockDataArgs) !== null && _b !== void 0 ? _b : [];
190
+ return (_b = (_a = PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId].Fields) !== null && _b !== void 0 ? _b : [];
171
191
  //MissingBlockData[paletteId] ?? (PWApiClient.listBlocksObj?.[paletteId].BlockDataArgs) as ComponentTypeHeader[] ?? []
172
192
  }
173
193
  }
@@ -176,4 +196,4 @@ export default class Block {
176
196
  // SWITCH_LOCAL_ACTIVATOR: [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte],
177
197
  // SWITCH_GLOBAL_ACTIVATOR: [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte],
178
198
  // } as Record<string, ComponentTypeHeader[]>;
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxZQUFxQyxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQWtCLE1BQU0sV0FBVyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE1BQU0sQ0FBQyxPQUFPLE9BQU8sS0FBSztJQUl0QixZQUFZLEdBQWdDLEVBQUUsSUFBaUI7UUFGL0QsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUdsQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUN2QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFvQjtRQUNuQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRVMsZUFBZSxDQUFDLE1BQW9CLEVBQUUsSUFBSSxHQUFHLEtBQUs7O1FBQ3hELE1BQU0sTUFBTSxHQUEwQixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsd0NBQXdDO1FBRW5ILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUE0QyxXQUFXLEVBQWtCLE1BQU0sV0FBVyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RSxNQUFNLENBQUMsT0FBTyxPQUFPLEtBQUs7SUFTdEIsWUFBWSxHQUFnQyxFQUFFLElBQXFHO1FBUG5KOzs7O1dBSUc7UUFDSCxTQUFJLEdBQTZCLEVBQUUsQ0FBQztRQUdoQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUN2QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsaUJBQWlCO1lBQ2pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUEsU0FBUztZQUNOLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzlDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMs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
@@ -3,3 +3,19 @@ export declare enum LayerType {
3
3
  Foreground = 1,
4
4
  Overlay = 2
5
5
  }
6
+ export declare enum EffectId {
7
+ JumpHeight = 0,
8
+ Fly = 1,
9
+ Speed = 2,
10
+ Invulnerability = 3,
11
+ Curse = 4,
12
+ Zombie = 5,
13
+ Poison = 6,
14
+ GravityForce = 7,
15
+ MultiJump = 8,
16
+ /**
17
+ * Left = 1, Up = 2, Right = 3.
18
+ */
19
+ GravityDirection = 9
20
+ }
21
+ export declare const MAX_WORLD_BLOCK_PLACED_PACKET_POSITION_SIZE = 200;
package/esm/Constants.js CHANGED
@@ -4,4 +4,21 @@ export var LayerType;
4
4
  LayerType[LayerType["Foreground"] = 1] = "Foreground";
5
5
  LayerType[LayerType["Overlay"] = 2] = "Overlay";
6
6
  })(LayerType || (LayerType = {}));
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL0NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ2pCLHFEQUFVLENBQUE7SUFDVixxREFBVSxDQUFBO0lBQ1YsK0NBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQiJ9
7
+ export var EffectId;
8
+ (function (EffectId) {
9
+ EffectId[EffectId["JumpHeight"] = 0] = "JumpHeight";
10
+ EffectId[EffectId["Fly"] = 1] = "Fly";
11
+ EffectId[EffectId["Speed"] = 2] = "Speed";
12
+ EffectId[EffectId["Invulnerability"] = 3] = "Invulnerability";
13
+ EffectId[EffectId["Curse"] = 4] = "Curse";
14
+ EffectId[EffectId["Zombie"] = 5] = "Zombie";
15
+ EffectId[EffectId["Poison"] = 6] = "Poison";
16
+ EffectId[EffectId["GravityForce"] = 7] = "GravityForce";
17
+ EffectId[EffectId["MultiJump"] = 8] = "MultiJump";
18
+ /**
19
+ * Left = 1, Up = 2, Right = 3.
20
+ */
21
+ EffectId[EffectId["GravityDirection"] = 9] = "GravityDirection";
22
+ })(EffectId || (EffectId = {}));
23
+ export const MAX_WORLD_BLOCK_PLACED_PACKET_POSITION_SIZE = 200;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL0NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ2pCLHFEQUFVLENBQUE7SUFDVixxREFBVSxDQUFBO0lBQ1YsK0NBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBY1g7QUFkRCxXQUFZLFFBQVE7SUFDaEIsbURBQVUsQ0FBQTtJQUNWLHFDQUFHLENBQUE7SUFDSCx5Q0FBSyxDQUFBO0lBQ0wsNkRBQWUsQ0FBQTtJQUNmLHlDQUFLLENBQUE7SUFDTCwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLHVEQUFZLENBQUE7SUFDWixpREFBUyxDQUFBO0lBQ1Q7O09BRUc7SUFDSCwrREFBZ0IsQ0FBQTtBQUNwQixDQUFDLEVBZFcsUUFBUSxLQUFSLFFBQVEsUUFjbkI7QUFDRCxNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FBRyxHQUFHLENBQUMifQ==
package/esm/Helper.d.ts CHANGED
@@ -66,6 +66,8 @@ export default class PWGameWorldHelper {
66
66
  receiveHook: Hook<PWGameHook>;
67
67
  /**
68
68
  * Internal function.
69
+ *
70
+ * Yes th typing is cursed, I don't care as this is private.
69
71
  */
70
72
  private initialise;
71
73
  /**