pw-js-world 0.4.3-dev.d102cb4 → 0.4.4-dev.913c07b

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/cm/Block.d.ts CHANGED
@@ -1,64 +1,32 @@
1
1
  import type { BlockArg, Point, SendableBlockPacket } from "./types/index.js";
2
- import BufferReader, { ComponentTypeHeader } from "./BufferReader.js";
3
2
  import { LayerType } from "./Constants.js";
4
- import { type BlockKeys } from "pw-js-api";
3
+ import { AnyBlockField, OmitRecursively, ProtoGen, type BlockKeys } from "pw-js-api";
5
4
  export default class Block {
6
5
  bId: number;
7
- args: BlockArg[];
8
- constructor(bId: number | BlockKeys | string, args?: BlockArg[]);
9
6
  /**
10
- * I mean... Just use .args.length !== 0 to see if it has args.
7
+ * NOTE as of October 2025, this is an object NOT an array.
11
8
  *
12
- * But anyway, this will return true if there is at least one args, otherwise false.
9
+ * Stores the arguments
13
10
  */
14
- hasArgs(): boolean;
11
+ args: Record<string, BlockArg>;
12
+ constructor(bId: number | BlockKeys | string, args?: BlockArg[] | OmitRecursively<Record<string, ProtoGen.BlockFieldValue>, "$typeName" | "$unknown">);
15
13
  /**
16
- * For helper.
17
- *
18
- * This is in Block class for organisation.
19
- *
20
- * This will deserialise by using the reader to get the block ID then retrieve the args, if applicable.
14
+ * True if there is at least one argument, otherwise false.
21
15
  */
22
- static deserialize(reader: BufferReader): Block;
23
- protected deserializeArgs(reader: BufferReader, flag?: boolean): this;
24
- /**
25
- * For helper.
26
- *
27
- * This is in Block class for organisation.
28
- */
29
- static deserializeArgs(reader: BufferReader): BlockArg[];
16
+ hasArgs(): boolean;
30
17
  /**
31
- * Serializes the block into a buffer. This is used to convert
32
- * the block into a binary format that can be sent over the game
33
- * server. As this is static, block id and args are required.
34
- *
35
- * - Little Endian
36
- * - With Id
37
- * - Type Byte omitted
18
+ * This is for the fields parameter in sending world block placement.
38
19
  */
39
- static serializeArgs(bId: number, args: BlockArg[]): Buffer;
20
+ static getArgsAsFields(block: Block): OmitRecursively<ProtoGen.WorldBlockPlacedPacket["fields"], "$typeName">;
21
+ static getArgsAsFields(bId: number, args?: Record<string, BlockArg>): OmitRecursively<ProtoGen.WorldBlockPlacedPacket["fields"], "$typeName">;
40
22
  /**
41
- * Serializes the block into a buffer. This is used to convert
42
- * the block into a binary format that can be sent over the game
43
- * server. As this is static, block id and args are required.
44
23
  *
45
- * - Big Endian
46
- * - No Id
47
- * - Type Byte included
48
24
  */
49
- static serializeArgs(bId: number, args: BlockArg[], options: {
50
- endian: "big";
51
- writeId: false;
52
- readTypeByte: true;
53
- }): Buffer;
54
- static serializeArgs(bId: number, args: BlockArg[], options: {
55
- endian: "little";
56
- writeId: false;
57
- readTypeByte: true;
58
- }): Buffer;
25
+ static getArgsAsArray(block: Block): BlockArg[];
26
+ static getArgsAsArray(bId: number, args?: Record<string, BlockArg>): BlockArg[];
59
27
  /**
60
- *
61
- * @param pos List of points (X and Y)
28
+ * Returns an object suitable for sending worldBlockPlacedPacket to connection.
29
+ * @param pos List of possible positions (a max of 250 positions) - this does not automatically truncate if it overfills.
62
30
  */
63
31
  toPacket(pos: Point[], layer: LayerType): SendableBlockPacket;
64
32
  toPacket(x: number, y: number, layer: LayerType): SendableBlockPacket;
@@ -77,9 +45,10 @@ export default class Block {
77
45
  clone(obj?: false): Block;
78
46
  clone(obj: true): {
79
47
  bId: number;
80
- args: BlockArg[];
48
+ args: Record<string, BlockArg>;
81
49
  name: string;
82
50
  };
51
+ compareTo(b: Block): boolean;
83
52
  /**
84
53
  * This can be convenient as it will always return the ID if it exists, and it will throw an error if it doesn't.
85
54
  *
@@ -99,15 +68,15 @@ export default class Block {
99
68
  */
100
69
  static getPaletteIdById(blockId: number): string;
101
70
  /**
102
- * Returns the arg types for that block by given block ID.
71
+ * Returns the block fields for that block by given block ID.
103
72
  *
104
73
  * If a block don't have args, it will return an empty array.
105
74
  *
106
75
  * If the block don't exist, it may throw an exception.
107
76
  */
108
- static getArgTypesByBlockId(blockId: number): ComponentTypeHeader[];
77
+ static getFieldsByBlockId(blockId: number): AnyBlockField[];
109
78
  /**
110
- * Returns the arg types for that block by given palette ID (full upper case).
79
+ * Returns the block fields for that block by given palette ID (full upper case).
111
80
  *
112
81
  * For eg "EMPTY" or "SIGN_GOLD"
113
82
  *
@@ -115,5 +84,5 @@ export default class Block {
115
84
  *
116
85
  * If the block don't exist, it may throw an exception.
117
86
  */
118
- static getArgTypesByPaletteId(paletteId: string): ComponentTypeHeader[];
87
+ static getFieldsByPaletteId(paletteId: string): AnyBlockField[];
119
88
  }
package/cm/Block.js CHANGED
@@ -1,83 +1,95 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const BufferReader_js_1 = tslib_1.__importDefault(require("./BufferReader.js"));
5
3
  const pw_js_api_1 = require("pw-js-api");
6
4
  const Error_js_1 = require("./util/Error.js");
5
+ const Misc_js_1 = require("./util/Misc.js");
7
6
  class Block {
8
7
  constructor(bId, args) {
9
- this.args = [];
8
+ /**
9
+ * NOTE as of October 2025, this is an object NOT an array.
10
+ *
11
+ * Stores the arguments
12
+ */
13
+ this.args = {};
10
14
  if (typeof bId === "number")
11
15
  this.bId = bId;
12
16
  else {
13
17
  this.bId = Block.getIdByName(bId);
14
18
  }
15
- if (args)
16
- this.args = args;
19
+ if (args) {
20
+ // LEGACY SUPPORT
21
+ if (Array.isArray(args)) {
22
+ args = Block.getArgsAsFields(this);
23
+ } // else {
24
+ const keys = Object.keys(args);
25
+ if (keys.length > 0) {
26
+ for (let i = 0, ken = keys.length; i < ken; i++) {
27
+ const arg = args[keys[i]];
28
+ const val = arg.value;
29
+ switch (arg.value.case) {
30
+ default:
31
+ // TODO: error handling?
32
+ case "boolValue":
33
+ case "byteArrayValue":
34
+ case "stringValue":
35
+ case "uint32Value":
36
+ case "int32Value":
37
+ this.args[keys[i]] = val.value;
38
+ }
39
+ }
40
+ }
41
+ //}
42
+ }
17
43
  }
18
44
  /**
19
- * I mean... Just use .args.length !== 0 to see if it has args.
20
- *
21
- * But anyway, this will return true if there is at least one args, otherwise false.
45
+ * True if there is at least one argument, otherwise false.
22
46
  */
23
47
  hasArgs() {
24
- return this.args.length !== 0;
25
- }
26
- /**
27
- * For helper.
28
- *
29
- * This is in Block class for organisation.
30
- *
31
- * This will deserialise by using the reader to get the block ID then retrieve the args, if applicable.
32
- */
33
- static deserialize(reader) {
34
- return new Block(reader.readUInt32LE()).deserializeArgs(reader);
48
+ return Object.keys(this.args).length > 0;
35
49
  }
36
- deserializeArgs(reader, flag = false) {
37
- var _a;
38
- const format = Block.getArgTypesByBlockId(this.bId); //(BlockArgsHeadings as any)[this.name];
39
- for (let i = 0; i < ((_a = format === null || format === void 0 ? void 0 : format.length) !== null && _a !== void 0 ? _a : 0); i++) {
40
- if (flag) {
41
- reader.expectUInt8(format[i]);
42
- }
43
- this.args[i] = reader.read(format[i], !flag);
50
+ static getArgsAsFields(bId, args) {
51
+ if (bId instanceof Block) {
52
+ args = bId.args;
53
+ bId = bId.bId;
44
54
  }
45
- return this;
46
- }
47
- /**
48
- * For helper.
49
- *
50
- * This is in Block class for organisation.
51
- */
52
- static deserializeArgs(reader) {
53
- // const args =
54
- return reader.deserialize();
55
- // for (let i = 0; i < (format?.length ?? 0); i++) {
56
- // if (flag) {
57
- // reader.expectUInt8(format[i]);
58
- // }
59
- // args[i] = reader.read(format[i], !flag);
60
- // }
61
- // return args;
55
+ if (args === undefined)
56
+ return {};
57
+ const fields = Block.getFieldsByBlockId(bId);
58
+ const obj = {};
59
+ for (let i = 0, len = fields.length; i < len; i++) {
60
+ const f = fields[i];
61
+ if (f.Required === true && args[f.Name] === undefined)
62
+ throw Error(`Missing argument: ${f.Name} (Type: ${f.Type})`);
63
+ else if (f.Required === false && args[f.Name] === undefined)
64
+ continue;
65
+ obj[f.Name] = {
66
+ value: {
67
+ case: (0, Misc_js_1.listedFieldTypeToGameType)(f.Type),
68
+ value: args[f.Name]
69
+ }
70
+ };
71
+ }
72
+ return obj;
62
73
  }
63
- static serializeArgs(bId, args, options) {
64
- options || (options = {
65
- endian: "little",
66
- writeId: true,
67
- readTypeByte: false,
68
- });
69
- const buffer = [];
70
- if (options.writeId) {
71
- const idBuffer = Buffer.alloc(4);
72
- idBuffer.writeUInt32LE(bId);
73
- buffer.push(idBuffer);
74
+ static getArgsAsArray(bId, args) {
75
+ if (bId instanceof Block) {
76
+ args = bId.args;
77
+ bId = bId.bId;
74
78
  }
75
- const blockData = Block.getArgTypesByBlockId(bId);
76
- for (let i = 0, len = blockData.length; i < len; i++) {
77
- const entry = BufferReader_js_1.default.Dynamic(blockData[i], args[i]);
78
- buffer.push(entry);
79
+ if (args === undefined)
80
+ return [];
81
+ const arr = [];
82
+ const fields = Block.getFieldsByBlockId(bId);
83
+ for (let i = 0, len = fields.length; i < len; i++) {
84
+ const f = fields[i];
85
+ const val = args[f.Name];
86
+ if (f.Required === true && val === undefined)
87
+ throw Error(`Missing argument: ${f.Name} (Type: ${f.Type})`);
88
+ else if (f.Required === false && args[f.Name] === undefined)
89
+ arr.push(undefined);
90
+ arr.push(args[fields[i].Name]);
79
91
  }
80
- return Buffer.concat(buffer);
92
+ return arr;
81
93
  }
82
94
  toPacket(pos, y, layer) {
83
95
  if (typeof pos === "number") {
@@ -93,7 +105,8 @@ class Block {
93
105
  blockId: this.bId,
94
106
  layer,
95
107
  positions: pos,
96
- extraFields: Block.serializeArgs(this.bId, this.args, { endian: "big", writeId: false, readTypeByte: true })
108
+ fields: Block.getArgsAsFields(this),
109
+ // extraFields: Block.serializeArgs(this.bId, this.args, { endian: "big", writeId: false, readTypeByte: true })
97
110
  };
98
111
  }
99
112
  /**
@@ -114,7 +127,13 @@ class Block {
114
127
  clone(obj = false) {
115
128
  if (obj === true)
116
129
  return { bId: this.bId, args: this.args, name: this.name };
117
- return new Block(this.bId, this.args);
130
+ const b = new Block(this.bId);
131
+ b.args = this.args;
132
+ return b;
133
+ }
134
+ compareTo(b) {
135
+ return this.bId === b.bId
136
+ && (0, Misc_js_1.compareObjs)(this.args, b.args);
118
137
  }
119
138
  /**
120
139
  * This can be convenient as it will always return the ID if it exists, and it will throw an error if it doesn't.
@@ -126,7 +145,7 @@ class Block {
126
145
  */
127
146
  static getIdByName(paletteId) {
128
147
  var _a;
129
- const block = (_a = pw_js_api_1.PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId];
148
+ const block = (_a = pw_js_api_1.PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId.toUpperCase()];
130
149
  if (block === undefined)
131
150
  throw new Error_js_1.MissingBlockError("Current block data is missing, run Api#listBlocks first?", paletteId);
132
151
  return block.Id;
@@ -147,20 +166,20 @@ class Block {
147
166
  return block.PaletteId.toUpperCase();
148
167
  }
149
168
  /**
150
- * Returns the arg types for that block by given block ID.
169
+ * Returns the block fields for that block by given block ID.
151
170
  *
152
171
  * If a block don't have args, it will return an empty array.
153
172
  *
154
173
  * If the block don't exist, it may throw an exception.
155
174
  */
156
- static getArgTypesByBlockId(blockId) {
175
+ static getFieldsByBlockId(blockId) {
157
176
  var _a, _b;
158
- return (_b = (_a = pw_js_api_1.PWApiClient.listBlocks) === null || _a === void 0 ? void 0 : _a[blockId].BlockDataArgs) !== null && _b !== void 0 ? _b : [];
177
+ return (_b = (_a = pw_js_api_1.PWApiClient.listBlocks) === null || _a === void 0 ? void 0 : _a[blockId].Fields) !== null && _b !== void 0 ? _b : [];
159
178
  // const block = PWApiClient.listBlocks?.[blockId];
160
179
  // return block ? MissingBlockData[block?.PaletteId.toUpperCase()] ?? (block.BlockDataArgs) as ComponentTypeHeader[] ?? [] : [];
161
180
  }
162
181
  /**
163
- * Returns the arg types for that block by given palette ID (full upper case).
182
+ * Returns the block fields for that block by given palette ID (full upper case).
164
183
  *
165
184
  * For eg "EMPTY" or "SIGN_GOLD"
166
185
  *
@@ -168,9 +187,9 @@ class Block {
168
187
  *
169
188
  * If the block don't exist, it may throw an exception.
170
189
  */
171
- static getArgTypesByPaletteId(paletteId) {
190
+ static getFieldsByPaletteId(paletteId) {
172
191
  var _a, _b;
173
- return (_b = (_a = pw_js_api_1.PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId].BlockDataArgs) !== null && _b !== void 0 ? _b : [];
192
+ return (_b = (_a = pw_js_api_1.PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId].Fields) !== null && _b !== void 0 ? _b : [];
174
193
  //MissingBlockData[paletteId] ?? (PWApiClient.listBlocksObj?.[paletteId].BlockDataArgs) as ComponentTypeHeader[] ?? []
175
194
  }
176
195
  }
@@ -180,4 +199,4 @@ exports.default = Block;
180
199
  // SWITCH_LOCAL_ACTIVATOR: [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte],
181
200
  // SWITCH_GLOBAL_ACTIVATOR: [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte],
182
201
  // } as Record<string, ComponentTypeHeader[]>;
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsZ0ZBQXNFO0FBRXRFLHlDQUF3RDtBQUN4RCw4Q0FBb0Q7QUFFcEQsTUFBcUIsS0FBSztJQUl0QixZQUFZLEdBQWdDLEVBQUUsSUFBaUI7UUFGL0QsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUdsQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUN2QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFvQjtRQUNuQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRVMsZUFBZSxDQUFDLE1BQW9CLEVBQUUsSUFBSSxHQUFHLEtBQUs7O1FBQ3hELE1BQU0sTUFBTSxHQUEwQixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsd0NBQXdDO1FBRW5ILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sbUNBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZ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
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSx5Q0FBa0c7QUFDbEcsOENBQW9EO0FBQ3BELDRDQUF3RTtBQUV4RSxNQUFxQixLQUFLO0lBU3RCLFlBQVksR0FBZ0MsRUFBRSxJQUFxRztRQVBuSjs7OztXQUlHO1FBQ0gsU0FBSSxHQUE2QixFQUFFLENBQUM7UUFHaEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDdkMsQ0FBQztZQUNGLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLGlCQUFpQjtZQUNqQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFBLFNBQVM7WUFDTixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRS9CLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7b0JBRXRCLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDckIs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
package/cm/Constants.d.ts CHANGED
@@ -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/cm/Constants.js CHANGED
@@ -1,10 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LayerType = void 0;
3
+ exports.MAX_WORLD_BLOCK_PLACED_PACKET_POSITION_SIZE = exports.EffectId = exports.LayerType = void 0;
4
4
  var LayerType;
5
5
  (function (LayerType) {
6
6
  LayerType[LayerType["Background"] = 0] = "Background";
7
7
  LayerType[LayerType["Foreground"] = 1] = "Foreground";
8
8
  LayerType[LayerType["Overlay"] = 2] = "Overlay";
9
9
  })(LayerType || (exports.LayerType = LayerType = {}));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL0NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDakIscURBQVUsQ0FBQTtJQUNWLHFEQUFVLENBQUE7SUFDViwrQ0FBTyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLFNBQVMseUJBQVQsU0FBUyxRQUlwQiJ9
10
+ var EffectId;
11
+ (function (EffectId) {
12
+ EffectId[EffectId["JumpHeight"] = 0] = "JumpHeight";
13
+ EffectId[EffectId["Fly"] = 1] = "Fly";
14
+ EffectId[EffectId["Speed"] = 2] = "Speed";
15
+ EffectId[EffectId["Invulnerability"] = 3] = "Invulnerability";
16
+ EffectId[EffectId["Curse"] = 4] = "Curse";
17
+ EffectId[EffectId["Zombie"] = 5] = "Zombie";
18
+ EffectId[EffectId["Poison"] = 6] = "Poison";
19
+ EffectId[EffectId["GravityForce"] = 7] = "GravityForce";
20
+ EffectId[EffectId["MultiJump"] = 8] = "MultiJump";
21
+ /**
22
+ * Left = 1, Up = 2, Right = 3.
23
+ */
24
+ EffectId[EffectId["GravityDirection"] = 9] = "GravityDirection";
25
+ })(EffectId || (exports.EffectId = EffectId = {}));
26
+ exports.MAX_WORLD_BLOCK_PLACED_PACKET_POSITION_SIZE = 200;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL0NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDakIscURBQVUsQ0FBQTtJQUNWLHFEQUFVLENBQUE7SUFDViwrQ0FBTyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLFNBQVMseUJBQVQsU0FBUyxRQUlwQjtBQUVELElBQVksUUFjWDtBQWRELFdBQVksUUFBUTtJQUNoQixtREFBVSxDQUFBO0lBQ1YscUNBQUcsQ0FBQTtJQUNILHlDQUFLLENBQUE7SUFDTCw2REFBZSxDQUFBO0lBQ2YseUNBQUssQ0FBQTtJQUNMLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sdURBQVksQ0FBQTtJQUNaLGlEQUFTLENBQUE7SUFDVDs7T0FFRztJQUNILCtEQUFnQixDQUFBO0FBQ3BCLENBQUMsRUFkVyxRQUFRLHdCQUFSLFFBQVEsUUFjbkI7QUFDWSxRQUFBLDJDQUEyQyxHQUFHLEdBQUcsQ0FBQyJ9
package/cm/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
  /**