pw-js-world 0.1.4-dev.e52001b → 0.1.5-dev.415d227

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/Player.js CHANGED
@@ -50,6 +50,7 @@ export default class Player {
50
50
  modmode: states.modmode,
51
51
  switches: states.switches,
52
52
  teamId: states.teamId,
53
+ counters: states.counters
53
54
  };
54
55
  }
55
56
  /**
@@ -67,6 +68,7 @@ export default class Player {
67
68
  modmode: false,
68
69
  switches: new Array(1000).fill(false),
69
70
  teamId: 0,
71
+ counters: new PlayerCounters()
70
72
  };
71
73
  }
72
74
  /**
@@ -108,4 +110,39 @@ export class PlayerEffect {
108
110
  return Math.max(0, Date.now() - (this.triggeredAt + this.duration));
109
111
  }
110
112
  }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL1BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBMEloQyxNQUFNLENBQUMsT0FBTyxPQUFPLE1BQU07SUFzRHZCLFlBQVksS0FBZ0MsRUFBRSxNQUFvQztRQVZsRjs7V0FFRztRQUNILFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ0gsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUdsQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQixDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3RCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDZixpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtnQkFDakQsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0I7Z0JBQzNELE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JB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
113
+ /**
114
+ * Index based
115
+ */
116
+ var CounterKeys;
117
+ (function (CounterKeys) {
118
+ CounterKeys[CounterKeys["WHITE"] = 0] = "WHITE";
119
+ CounterKeys[CounterKeys["GRAY"] = 1] = "GRAY";
120
+ CounterKeys[CounterKeys["BLACK"] = 2] = "BLACK";
121
+ CounterKeys[CounterKeys["RED"] = 3] = "RED";
122
+ CounterKeys[CounterKeys["ORANGE"] = 4] = "ORANGE";
123
+ CounterKeys[CounterKeys["YELLOW"] = 5] = "YELLOW";
124
+ CounterKeys[CounterKeys["GREEN"] = 6] = "GREEN";
125
+ CounterKeys[CounterKeys["CYAN"] = 7] = "CYAN";
126
+ CounterKeys[CounterKeys["BLUE"] = 8] = "BLUE";
127
+ CounterKeys[CounterKeys["MAGENTA"] = 9] = "MAGENTA";
128
+ })(CounterKeys || (CounterKeys = {}));
129
+ export class PlayerCounters {
130
+ constructor(scores = []) {
131
+ var _a;
132
+ this.scores = [];
133
+ for (let i = 0; i < 10; i++) {
134
+ this.scores[i] = (_a = scores[i]) !== null && _a !== void 0 ? _a : 0;
135
+ }
136
+ }
137
+ get(id) {
138
+ if (typeof id === "number")
139
+ return this.scores[id];
140
+ const index = CounterKeys[id.toUpperCase()];
141
+ if (index !== undefined) {
142
+ return this.scores[index];
143
+ }
144
+ else
145
+ throw Error("Unknown colour");
146
+ }
147
+ }
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL1BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBOEloQyxNQUFNLENBQUMsT0FBTyxPQUFPLE1BQU07SUFzRHZCLFlBQVksS0FBZ0MsRUFBRSxNQUFvQztRQVZsRjs7V0FFRztRQUNILFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ0gsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUdsQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQixDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3RCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRztnQkFDZixpQkFBaUIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtnQkFDakQsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0I7Z0JBQzNELE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JB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
package/esm/index.d.ts CHANGED
@@ -2,7 +2,8 @@ export type * from "./types/index.d.ts";
2
2
  export { default as PWGameWorldHelper } from "./Helper.js";
3
3
  export { ComponentTypeHeader, default as BufferReader } from "./BufferReader.js";
4
4
  export { default as Block, BlockArgsHeadings } from "./Block.js";
5
- export { default as Player, PlayerEffect, type IPlayer, type IPlayerEffect, type IPlayerRights, type IPlayerWorldState } from "./Player.js";
5
+ export { default as Player, PlayerEffect, PlayerCounters, type IPlayer, type IPlayerEffect, type IPlayerRights, type IPlayerWorldState } from "./Player.js";
6
6
  export { createBlockPacket, createBlockPackets } from "./Util.js";
7
+ export * as Util from "./Util.js";
7
8
  export * from "./Constants.js";
8
9
  export * as Constants from "./Constants.js";
package/esm/index.js CHANGED
@@ -1,10 +1,12 @@
1
1
  export { default as PWGameWorldHelper } from "./Helper.js";
2
2
  export { ComponentTypeHeader, default as BufferReader } from "./BufferReader.js";
3
3
  export { default as Block, BlockArgsHeadings } from "./Block.js";
4
- export { default as Player, PlayerEffect } from "./Player.js";
4
+ export { default as Player, PlayerEffect, PlayerCounters } from "./Player.js";
5
5
  export { createBlockPacket, createBlockPackets } from "./Util.js";
6
+ import * as Util_1 from "./Util.js";
7
+ export { Util_1 as Util };
6
8
  export * from "./Constants.js";
7
9
  import * as Constants_1 from "./Constants.js";
8
10
  export { Constants_1 as Constants };
9
11
  // import * from "./Helper";
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLFlBQVksRUFBZ0YsTUFBTSxhQUFhLENBQUM7QUFFNUksT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxFLGNBQWMsZ0JBQWdCLENBQUM7NkJBQ0osZ0JBQWdCO3dCQUEvQixTQUFTO0FBRXJCLDRCQUE0QiJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQWdGLE1BQU0sYUFBYSxDQUFDO0FBRTVKLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzt3QkFDNUMsV0FBVzttQkFBckIsSUFBSTtBQUVoQixjQUFjLGdCQUFnQixDQUFDOzZCQUNKLGdCQUFnQjt3QkFBL0IsU0FBUztBQUVyQiw0QkFBNEIifQ==
@@ -46,4 +46,5 @@ export type PWGameHook = {
46
46
  playerChatPacket: { player: Player },
47
47
  playerDirectMessagePacket: { player: Player },
48
48
  playerTouchBlockPacket: { player: Player },
49
+ playerCounterTransactionPacket: { player: Player, oldScore: number, diff: number }
49
50
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pw-js-world",
3
- "version": "0.1.4-dev.e52001b",
3
+ "version": "0.1.5-dev.415d227",
4
4
  "description": "An optional package for PW-JS-Api, aims to serve world purposes.",
5
5
  "exports": {
6
6
  "types": "./esm/index.js",
@@ -30,7 +30,7 @@
30
30
  "tslib": "~2.8.1"
31
31
  },
32
32
  "peerDependencies": {
33
- "pw-js-api": ">=0.2.4"
33
+ "pw-js-api": ">=0.2.6"
34
34
  },
35
35
  "scripts": {
36
36
  "test": "bun test/index.ts",
package/cm/Block.d.ts DELETED
@@ -1,119 +0,0 @@
1
- import type { BlockArg, Point, SendableBlockPacket } from "./types/index.js";
2
- import BufferReader, { ComponentTypeHeader } from "./BufferReader.js";
3
- import { LayerType } from "./Constants.js";
4
- import type { BlockKeys } from "./types/excluded.js";
5
- export default class Block {
6
- bId: number;
7
- args: BlockArg[];
8
- constructor(bId: number | BlockKeys, args?: BlockArg[]);
9
- /**
10
- * I mean... Just use .args.length !== 0 to see if it has args.
11
- *
12
- * But anyway, this will return true if there is at least one args, otherwise false.
13
- */
14
- hasArgs(): boolean;
15
- /**
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.
21
- */
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(blockId: number, reader: BufferReader, flag?: boolean): BlockArg[];
30
- /**
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
38
- */
39
- static serializeArgs(bId: number, args: BlockArg[]): Buffer;
40
- /**
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
- *
45
- * - Big Endian
46
- * - No Id
47
- * - Type Byte included
48
- */
49
- static serializeArgs(bId: number, args: BlockArg[], options: {
50
- endian: "big";
51
- writeId: false;
52
- readTypeByte: true;
53
- }): Buffer;
54
- /**
55
- *
56
- * @param pos List of points (X and Y)
57
- */
58
- toPacket(pos: Point[], layer: LayerType): SendableBlockPacket;
59
- toPacket(x: number, y: number, layer: LayerType): SendableBlockPacket;
60
- /**
61
- * This will return the block name in UPPER_CASE form.
62
- *
63
- * For eg EFFECTS_INVULNERABILITY.
64
- */
65
- get name(): BlockKeys;
66
- /**
67
- * Returns a copy of the block.
68
- */
69
- clone(obj?: false): Block;
70
- clone(obj: true): {
71
- bId: number;
72
- args: BlockArg[];
73
- name: string;
74
- };
75
- }
76
- /**
77
- * This mapping contains definitions of block data which require additional
78
- * arguments to be sent or received with.
79
- */
80
- export declare const BlockArgsHeadings: {
81
- readonly COIN_GOLD_DOOR: readonly [ComponentTypeHeader.Int32];
82
- readonly COIN_BLUE_DOOR: readonly [ComponentTypeHeader.Int32];
83
- readonly COIN_GOLD_GATE: readonly [ComponentTypeHeader.Int32];
84
- readonly COIN_BLUE_GATE: readonly [ComponentTypeHeader.Int32];
85
- readonly EFFECTS_JUMP_HEIGHT: readonly [ComponentTypeHeader.Int32];
86
- readonly EFFECTS_FLY: readonly [ComponentTypeHeader.Boolean];
87
- readonly EFFECTS_SPEED: readonly [ComponentTypeHeader.Int32];
88
- readonly EFFECTS_INVULNERABILITY: readonly [ComponentTypeHeader.Boolean];
89
- readonly EFFECTS_CURSE: readonly [ComponentTypeHeader.Int32];
90
- readonly EFFECTS_ZOMBIE: readonly [ComponentTypeHeader.Int32];
91
- readonly EFFECTS_GRAVITYFORCE: readonly [ComponentTypeHeader.Int32];
92
- readonly EFFECTS_MULTI_JUMP: readonly [ComponentTypeHeader.Int32];
93
- readonly TOOL_PORTAL_WORLD_SPAWN: readonly [ComponentTypeHeader.Int32];
94
- readonly SIGN_NORMAL: readonly [ComponentTypeHeader.String];
95
- readonly SIGN_RED: readonly [ComponentTypeHeader.String];
96
- readonly SIGN_GREEN: readonly [ComponentTypeHeader.String];
97
- readonly SIGN_BLUE: readonly [ComponentTypeHeader.String];
98
- readonly SIGN_GOLD: readonly [ComponentTypeHeader.String];
99
- readonly PORTAL: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Int32, ComponentTypeHeader.Int32];
100
- readonly PORTAL_INVISIBLE: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Int32, ComponentTypeHeader.Int32];
101
- readonly PORTAL_WORLD: readonly [ComponentTypeHeader.String, ComponentTypeHeader.Int32];
102
- readonly SWITCH_LOCAL_TOGGLE: readonly [ComponentTypeHeader.Int32];
103
- readonly SWITCH_LOCAL_ACTIVATOR: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte];
104
- readonly SWITCH_LOCAL_RESETTER: readonly [ComponentTypeHeader.Byte];
105
- readonly SWITCH_LOCAL_DOOR: readonly [ComponentTypeHeader.Int32];
106
- readonly SWITCH_LOCAL_GATE: readonly [ComponentTypeHeader.Int32];
107
- readonly SWITCH_GLOBAL_TOGGLE: readonly [ComponentTypeHeader.Int32];
108
- readonly SWITCH_GLOBAL_ACTIVATOR: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte];
109
- readonly SWITCH_GLOBAL_RESETTER: readonly [ComponentTypeHeader.Byte];
110
- readonly SWITCH_GLOBAL_DOOR: readonly [ComponentTypeHeader.Int32];
111
- readonly SWITCH_GLOBAL_GATE: readonly [ComponentTypeHeader.Int32];
112
- readonly HAZARD_DEATH_DOOR: readonly [ComponentTypeHeader.Int32];
113
- readonly HAZARD_DEATH_GATE: readonly [ComponentTypeHeader.Int32];
114
- readonly NOTE_DRUM: readonly [ComponentTypeHeader.ByteArray];
115
- readonly NOTE_PIANO: readonly [ComponentTypeHeader.ByteArray];
116
- readonly NOTE_GUITAR: readonly [ComponentTypeHeader.ByteArray];
117
- readonly CUSTOM_SOLID_BG: readonly [ComponentTypeHeader.Int32];
118
- readonly CUSTOM_CHECKER_BG: readonly [ComponentTypeHeader.Int32];
119
- };
package/cm/Block.js DELETED
@@ -1,163 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BlockArgsHeadings = void 0;
4
- const tslib_1 = require("tslib");
5
- const pw_js_api_1 = require("pw-js-api");
6
- const BufferReader_js_1 = tslib_1.__importStar(require("./BufferReader.js"));
7
- class Block {
8
- constructor(bId, args) {
9
- this.args = [];
10
- if (typeof bId === "number")
11
- this.bId = bId;
12
- else {
13
- this.bId = pw_js_api_1.BlockNames[bId];
14
- }
15
- if (args)
16
- this.args = args;
17
- }
18
- /**
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.
22
- */
23
- 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);
35
- }
36
- deserializeArgs(reader, flag = false) {
37
- var _a;
38
- const format = exports.BlockArgsHeadings[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);
44
- }
45
- return this;
46
- }
47
- /**
48
- * For helper.
49
- *
50
- * This is in Block class for organisation.
51
- */
52
- static deserializeArgs(blockId, reader, flag = false) {
53
- var _a;
54
- const format = exports.BlockArgsHeadings[pw_js_api_1.BlockNames[blockId]];
55
- const args = [];
56
- for (let i = 0; i < ((_a = format === null || format === void 0 ? void 0 : format.length) !== null && _a !== void 0 ? _a : 0); i++) {
57
- if (flag) {
58
- reader.expectUInt8(format[i]);
59
- }
60
- args[i] = reader.read(format[i], !flag);
61
- }
62
- return args;
63
- }
64
- static serializeArgs(bId, args, options) {
65
- var _a;
66
- options || (options = {
67
- endian: "little",
68
- writeId: true,
69
- readTypeByte: false,
70
- });
71
- const buffer = [];
72
- if (options.writeId) {
73
- const idBuffer = Buffer.alloc(4);
74
- idBuffer.writeUInt32LE(bId);
75
- buffer.push(idBuffer);
76
- }
77
- const blockData = (_a = exports.BlockArgsHeadings[pw_js_api_1.BlockNames[bId]]) !== null && _a !== void 0 ? _a : [];
78
- for (let i = 0, len = blockData.length; i < len; i++) {
79
- const entry = BufferReader_js_1.default.Dynamic(blockData[i], args[i]);
80
- buffer.push(entry);
81
- }
82
- return Buffer.concat(buffer);
83
- }
84
- toPacket(pos, y, layer) {
85
- if (typeof pos === "number") {
86
- pos = [{
87
- x: pos, y
88
- }];
89
- layer = layer !== null && layer !== void 0 ? layer : 0;
90
- }
91
- else
92
- layer = y !== null && y !== void 0 ? y : 0;
93
- return {
94
- isFillOperation: false,
95
- blockId: this.bId,
96
- layer,
97
- positions: pos,
98
- extraFields: Block.serializeArgs(this.bId, this.args, { endian: "big", writeId: false, readTypeByte: true })
99
- };
100
- }
101
- /**
102
- * This will return the block name in UPPER_CASE form.
103
- *
104
- * For eg EFFECTS_INVULNERABILITY.
105
- */
106
- get name() {
107
- return pw_js_api_1.BlockNames[this.bId];
108
- }
109
- clone(obj = false) {
110
- if (obj === true)
111
- return { bId: this.bId, args: this.args, name: this.name };
112
- return new Block(this.bId, this.args);
113
- }
114
- }
115
- exports.default = Block;
116
- /**
117
- * This mapping contains definitions of block data which require additional
118
- * arguments to be sent or received with.
119
- */
120
- exports.BlockArgsHeadings = {
121
- COIN_GOLD_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
122
- COIN_BLUE_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
123
- COIN_GOLD_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
124
- COIN_BLUE_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
125
- EFFECTS_JUMP_HEIGHT: [BufferReader_js_1.ComponentTypeHeader.Int32],
126
- EFFECTS_FLY: [BufferReader_js_1.ComponentTypeHeader.Boolean],
127
- EFFECTS_SPEED: [BufferReader_js_1.ComponentTypeHeader.Int32],
128
- EFFECTS_INVULNERABILITY: [BufferReader_js_1.ComponentTypeHeader.Boolean],
129
- EFFECTS_CURSE: [BufferReader_js_1.ComponentTypeHeader.Int32],
130
- EFFECTS_ZOMBIE: [BufferReader_js_1.ComponentTypeHeader.Int32],
131
- EFFECTS_GRAVITYFORCE: [BufferReader_js_1.ComponentTypeHeader.Int32],
132
- EFFECTS_MULTI_JUMP: [BufferReader_js_1.ComponentTypeHeader.Int32],
133
- // gravity effects no data
134
- // effects off
135
- // effects zombie
136
- TOOL_PORTAL_WORLD_SPAWN: [BufferReader_js_1.ComponentTypeHeader.Int32],
137
- SIGN_NORMAL: [BufferReader_js_1.ComponentTypeHeader.String],
138
- SIGN_RED: [BufferReader_js_1.ComponentTypeHeader.String],
139
- SIGN_GREEN: [BufferReader_js_1.ComponentTypeHeader.String],
140
- SIGN_BLUE: [BufferReader_js_1.ComponentTypeHeader.String],
141
- SIGN_GOLD: [BufferReader_js_1.ComponentTypeHeader.String],
142
- PORTAL: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32],
143
- PORTAL_INVISIBLE: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32],
144
- PORTAL_WORLD: [BufferReader_js_1.ComponentTypeHeader.String, BufferReader_js_1.ComponentTypeHeader.Int32],
145
- SWITCH_LOCAL_TOGGLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
146
- SWITCH_LOCAL_ACTIVATOR: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Byte],
147
- SWITCH_LOCAL_RESETTER: [BufferReader_js_1.ComponentTypeHeader.Byte],
148
- SWITCH_LOCAL_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
149
- SWITCH_LOCAL_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
150
- SWITCH_GLOBAL_TOGGLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
151
- SWITCH_GLOBAL_ACTIVATOR: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Byte],
152
- SWITCH_GLOBAL_RESETTER: [BufferReader_js_1.ComponentTypeHeader.Byte],
153
- SWITCH_GLOBAL_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
154
- SWITCH_GLOBAL_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
155
- HAZARD_DEATH_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
156
- HAZARD_DEATH_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
157
- NOTE_DRUM: [BufferReader_js_1.ComponentTypeHeader.ByteArray],
158
- NOTE_PIANO: [BufferReader_js_1.ComponentTypeHeader.ByteArray],
159
- NOTE_GUITAR: [BufferReader_js_1.ComponentTypeHeader.ByteArray],
160
- CUSTOM_SOLID_BG: [BufferReader_js_1.ComponentTypeHeader.Int32],
161
- CUSTOM_CHECKER_BG: [BufferReader_js_1.ComponentTypeHeader.Int32],
162
- };
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHlDQUF1QztBQUV2Qyw2RUFBc0U7QUFJdEUsTUFBcUIsS0FBSztJQUl0QixZQUFZLEdBQXVCLEVBQUUsSUFBaUI7UUFGdEQsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUdsQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUN2QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxzQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFvQjtRQUNuQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRVMsZUFBZSxDQUFDLE1BQW9CLEVBQUUsSUFBSSxHQUFHLEtBQUs7O1FBQ3hELE1BQU0sTUFBTSxHQUEyQix5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxtQ0FBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsTUFBTSxDQUFDLFdB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