pw-js-world 0.0.4 → 0.0.5-dev.24aedef
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 → cm}/Block.d.ts +3 -3
- package/cm/Block.js +161 -0
- package/cm/BufferReader.js +673 -0
- package/cm/Constants.js +9 -0
- package/{dist → cm}/Helper.d.ts +4 -4
- package/cm/Helper.js +494 -0
- package/{dist → cm}/Player.d.ts +1 -1
- package/cm/Player.js +115 -0
- package/cm/index.js +18 -0
- package/esm/Block.d.ts +117 -0
- package/{dist → esm}/Block.js +3 -3
- package/esm/BufferReader.d.ts +324 -0
- package/{dist → esm}/BufferReader.js +8 -13
- package/esm/Constants.d.ts +4 -0
- package/esm/Helper.d.ts +115 -0
- package/{dist → esm}/Helper.js +5 -5
- package/{lib/Player.ts → esm/Player.d.ts} +16 -111
- package/{lib/index.ts → esm/index.d.ts} +0 -6
- package/{dist → esm}/index.js +3 -2
- package/{lib → esm}/types/index.d.ts +2 -2
- package/package.json +6 -7
- package/tsconfig-cm.json +8 -0
- package/tsconfig-esm.json +8 -0
- package/dist/types/index.d.ts +0 -49
- package/esm.mjs +0 -33
- package/lib/Block.ts +0 -217
- package/lib/BufferReader.ts +0 -770
- package/lib/Constants.ts +0 -4
- package/lib/Helper.ts +0 -593
- /package/{dist → cm}/BufferReader.d.ts +0 -0
- /package/{dist → cm}/Constants.d.ts +0 -0
- /package/{dist → cm}/index.d.ts +0 -0
- /package/{dist → esm}/Constants.js +0 -0
- /package/{dist → esm}/Player.js +0 -0
package/{dist → cm}/Block.d.ts
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BlockNames } from "pw-js-api";
|
|
2
|
-
import type { BlockArg, Point, SendableBlockPacket } from "./types";
|
|
3
|
-
import BufferReader, { ComponentTypeHeader } from "./BufferReader";
|
|
4
|
-
import { LayerType } from "./Constants";
|
|
2
|
+
import type { BlockArg, Point, SendableBlockPacket } from "./types/index.js";
|
|
3
|
+
import BufferReader, { ComponentTypeHeader } from "./BufferReader.js";
|
|
4
|
+
import { LayerType } from "./Constants.js";
|
|
5
5
|
export default class Block {
|
|
6
6
|
bId: number;
|
|
7
7
|
args: BlockArg[];
|
package/cm/Block.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
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.Boolean],
|
|
147
|
+
SWITCH_LOCAL_RESETTER: [BufferReader_js_1.ComponentTypeHeader.Boolean],
|
|
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.Boolean],
|
|
152
|
+
SWITCH_GLOBAL_RESETTER: [BufferReader_js_1.ComponentTypeHeader.Boolean],
|
|
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
|
+
};
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHlDQUF1QztBQUV2Qyw2RUFBc0U7QUFHdEUsTUFBcUIsS0FBSztJQUl0QixZQUFZLEdBQXFDLEVBQUUsSUFBaUI7UUFGcEUsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUdsQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQzthQUN2QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxzQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFvQjtRQUNuQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRVMsZUFBZSxDQUFDLE1BQW9CLEVBQUUsSUFBSSxHQUFHLEtBQUs7O1FBQ3hELE1BQU0sTUFBTSxHQUEyQix5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxtQ0FBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsTUFBTSxDQUFDLFdB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
|