@jsprismarine/protocol 0.14.0 → 0.14.1-unstable-20260512195405
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/CHANGELOG.md +8 -0
- package/dist/NetworkBinaryStream.cjs.cjs +65 -61
- package/dist/NetworkBinaryStream.es.js +58 -53
- package/dist/NetworkPacket.cjs.cjs +67 -66
- package/dist/NetworkPacket.es.js +62 -62
- package/dist/NetworkStructure.cjs.cjs +26 -20
- package/dist/NetworkStructure.es.js +21 -16
- package/dist/PacketIdentifier.cjs.cjs +35 -31
- package/dist/PacketIdentifier.es.js +33 -27
- package/dist/_virtual/_rolldown/runtime.cjs.cjs +34 -0
- package/dist/_virtual/_rolldown/runtime.es.js +13 -0
- package/dist/index.cjs.cjs +51 -52
- package/dist/index.es.js +23 -24
- package/dist/structure/ActorLink.cjs.cjs +43 -35
- package/dist/structure/ActorLink.es.js +38 -31
- package/dist/structure/BlockPos.cjs.cjs +34 -31
- package/dist/structure/BlockPos.es.js +29 -27
- package/dist/structure/ChunkPos.cjs.cjs +28 -26
- package/dist/structure/ChunkPos.es.js +26 -22
- package/dist/structure/DataItem.cjs.cjs +93 -87
- package/dist/structure/DataItem.es.js +90 -83
- package/dist/structure/Experiments.cjs.cjs +30 -29
- package/dist/structure/Experiments.es.js +25 -25
- package/dist/structure/ItemData.cjs.cjs +35 -29
- package/dist/structure/ItemData.es.js +30 -25
- package/dist/structure/ItemInstanceUserData.cjs.cjs +56 -59
- package/dist/structure/ItemInstanceUserData.es.js +50 -55
- package/dist/structure/LevelSettings.cjs.cjs +193 -175
- package/dist/structure/LevelSettings.es.js +187 -171
- package/dist/structure/NetworkItemStackDescriptor.cjs.cjs +56 -49
- package/dist/structure/NetworkItemStackDescriptor.es.js +51 -45
- package/dist/structure/PropertySyncData.cjs.cjs +38 -33
- package/dist/structure/PropertySyncData.es.js +33 -29
- package/dist/structure/SerializedAbilitiesData.cjs.cjs +39 -41
- package/dist/structure/SerializedAbilitiesData.es.js +34 -37
- package/dist/structure/SerializedAbilityLayer.cjs.cjs +43 -35
- package/dist/structure/SerializedAbilityLayer.es.js +38 -31
- package/dist/structure/SpawnSettings.cjs.cjs +33 -27
- package/dist/structure/SpawnSettings.es.js +28 -23
- package/dist/structure/SyncedPlayerMovementSettings.cjs.cjs +35 -29
- package/dist/structure/SyncedPlayerMovementSettings.es.js +30 -25
- package/dist/structure/UUID.cjs.cjs +27 -26
- package/dist/structure/UUID.es.js +22 -22
- package/dist/structure/Vec2.cjs.cjs +44 -36
- package/dist/structure/Vec2.es.js +39 -32
- package/dist/structure/Vec3.cjs.cjs +45 -38
- package/dist/structure/Vec3.es.js +40 -34
- package/dist/structure/index.cjs.cjs +65 -41
- package/dist/structure/index.es.js +42 -18
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @jsprismarine/protocol
|
|
2
2
|
|
|
3
|
+
## 0.14.1-unstable-20260512195405
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @jsprismarine/minecraft@0.14.1-unstable-20260512195405
|
|
9
|
+
- @jsprismarine/nbt@0.14.1-unstable-20260512195405
|
|
10
|
+
|
|
3
11
|
## 0.14.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
|
@@ -1,62 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, {
|
|
3
|
+
__esModule: { value: true },
|
|
4
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
5
|
+
});
|
|
6
|
+
const require_runtime = require("./_virtual/_rolldown/runtime.cjs.cjs");
|
|
7
|
+
let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils");
|
|
8
|
+
_jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1);
|
|
9
|
+
//#region src/NetworkBinaryStream.ts
|
|
10
|
+
/**
|
|
11
|
+
* Represents an extended version of the BinaryStream class that includes
|
|
12
|
+
* minecraft-specific serialization methods.
|
|
13
|
+
*/
|
|
14
|
+
var NetworkBinaryStream = class extends _jsprismarine_jsbinaryutils.default {
|
|
15
|
+
/**
|
|
16
|
+
* Reads a string from the stream.
|
|
17
|
+
* {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
|
|
18
|
+
* @returns The read string.
|
|
19
|
+
*/
|
|
20
|
+
readString() {
|
|
21
|
+
return this.readLengthPrefixed().toString("utf-8");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Writes a string to the stream.
|
|
25
|
+
* @param str - The string to write.
|
|
26
|
+
*/
|
|
27
|
+
writeString(str) {
|
|
28
|
+
this.writeLengthPrefixed(Buffer.from(str, "utf-8"));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Reads a length-prefixed ASCII string from the stream.
|
|
32
|
+
* {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
|
|
33
|
+
* @returns The read string.
|
|
34
|
+
*/
|
|
35
|
+
readLELengthASCIIString() {
|
|
36
|
+
return this.read(this.readUnsignedIntLE()).toString("ascii");
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Writes a length-prefixed ASCII string to the stream.
|
|
40
|
+
* @param str - The string to write.
|
|
41
|
+
*/
|
|
42
|
+
writeLELengthASCIIString(str) {
|
|
43
|
+
const buf = Buffer.from(str, "ascii");
|
|
44
|
+
this.writeUnsignedIntLE(buf.byteLength);
|
|
45
|
+
this.write(buf);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Reads a length-prefixed buffer from the stream.
|
|
49
|
+
* @returns The length-prefixed buffer.
|
|
50
|
+
*/
|
|
51
|
+
readLengthPrefixed() {
|
|
52
|
+
return this.read(this.readUnsignedVarInt());
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Writes a length-prefixed buffer to the stream.
|
|
56
|
+
* @param buf - The buffer to append.
|
|
57
|
+
*/
|
|
58
|
+
writeLengthPrefixed(buf) {
|
|
59
|
+
this.writeUnsignedVarInt(buf.byteLength);
|
|
60
|
+
this.write(buf);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
//#endregion
|
|
61
64
|
exports.default = NetworkBinaryStream;
|
|
62
|
-
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya0JpbmFyeVN0cmVhbS5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9OZXR3b3JrQmluYXJ5U3RyZWFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGV4dGVuZGVkIHZlcnNpb24gb2YgdGhlIEJpbmFyeVN0cmVhbSBjbGFzcyB0aGF0IGluY2x1ZGVzXG4gKiBtaW5lY3JhZnQtc3BlY2lmaWMgc2VyaWFsaXphdGlvbiBtZXRob2RzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrQmluYXJ5U3RyZWFtIGV4dGVuZHMgQmluYXJ5U3RyZWFtIHtcbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIHN0cmluZyBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICoge0BsaW5rIGh0dHBzOi8vbW9qYW5nLmdpdGh1Yi5pby9iZWRyb2NrLXByb3RvY29sLWRvY3MvaHRtbC9zdHJpbmcuaHRtbCB8IE5vdCBkb2N1bWVudGVkIGluIHRoZSBwcm90b2NvbCBkb2NzfVxuICAgICAqIEByZXR1cm5zIFRoZSByZWFkIHN0cmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZFN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkTGVuZ3RoUHJlZml4ZWQoKS50b1N0cmluZygndXRmLTgnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBzdHJpbmcgdG8gdGhlIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB3cml0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVTdHJpbmcoc3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0ZUxlbmd0aFByZWZpeGVkKEJ1ZmZlci5mcm9tKHN0ciwgJ3V0Zi04JykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWRzIGEgbGVuZ3RoLXByZWZpeGVkIEFTQ0lJIHN0cmluZyBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICoge0BsaW5rIGh0dHBzOi8vbW9qYW5nLmdpdGh1Yi5pby9iZWRyb2NrLXByb3RvY29sLWRvY3MvaHRtbC9zdHJpbmcuaHRtbCB8IE5vdCBkb2N1bWVudGVkIGluIHRoZSBwcm90b2NvbCBkb2NzfVxuICAgICAqIEByZXR1cm5zIFRoZSByZWFkIHN0cmluZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZExFTGVuZ3RoQVNDSUlTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZCh0aGlzLnJlYWRVbnNpZ25lZEludExFKCkpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlcyBhIGxlbmd0aC1wcmVmaXhlZCBBU0NJSSBzdHJpbmcgdG8gdGhlIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB3cml0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVMRUxlbmd0aEFTQ0lJU3RyaW5nKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHN0ciwgJ2FzY2lpJyk7XG4gICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZEludExFKGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy53cml0ZShidWYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWRzIGEgbGVuZ3RoLXByZWZpeGVkIGJ1ZmZlciBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybnMgVGhlIGxlbmd0aC1wcmVmaXhlZCBidWZmZXIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRMZW5ndGhQcmVmaXhlZCgpOiBCdWZmZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKHRoaXMucmVhZFVuc2lnbmVkVmFySW50KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlcyBhIGxlbmd0aC1wcmVmaXhlZCBidWZmZXIgdG8gdGhlIHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gYnVmIC0gVGhlIGJ1ZmZlciB0byBhcHBlbmQuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlTGVuZ3RoUHJlZml4ZWQoYnVmOiBCdWZmZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkVmFySW50KGJ1Zi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy53cml0ZShidWYpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQU1BLElBQXFCLHNCQUFyQixjQUFpRCw0QkFBQSxRQUFhOzs7Ozs7Q0FNMUQsYUFBNEI7RUFDeEIsT0FBTyxLQUFLLG9CQUFvQixDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT3RELFlBQW1CLEtBQW1CO0VBQ2xDLEtBQUssb0JBQW9CLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQzs7Ozs7OztDQVF2RCwwQkFBeUM7RUFDckMsT0FBTyxLQUFLLEtBQUssS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT2hFLHlCQUFnQyxLQUFtQjtFQUMvQyxNQUFNLE1BQU0sT0FBTyxLQUFLLEtBQUssUUFBUTtFQUNyQyxLQUFLLG1CQUFtQixJQUFJLFdBQVc7RUFDdkMsS0FBSyxNQUFNLElBQUk7Ozs7OztDQU9uQixxQkFBb0M7RUFDaEMsT0FBTyxLQUFLLEtBQUssS0FBSyxvQkFBb0IsQ0FBQzs7Ozs7O0NBTy9DLG9CQUEyQixLQUFtQjtFQUMxQyxLQUFLLG9CQUFvQixJQUFJLFdBQVc7RUFDeEMsS0FBSyxNQUFNLElBQUkifQ==
|
|
@@ -1,54 +1,59 @@
|
|
|
1
|
-
import BinaryStream from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
import BinaryStream from "@jsprismarine/jsbinaryutils";
|
|
2
|
+
//#region src/NetworkBinaryStream.ts
|
|
3
|
+
/**
|
|
4
|
+
* Represents an extended version of the BinaryStream class that includes
|
|
5
|
+
* minecraft-specific serialization methods.
|
|
6
|
+
*/
|
|
7
|
+
var NetworkBinaryStream = class extends BinaryStream {
|
|
8
|
+
/**
|
|
9
|
+
* Reads a string from the stream.
|
|
10
|
+
* {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
|
|
11
|
+
* @returns The read string.
|
|
12
|
+
*/
|
|
13
|
+
readString() {
|
|
14
|
+
return this.readLengthPrefixed().toString("utf-8");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Writes a string to the stream.
|
|
18
|
+
* @param str - The string to write.
|
|
19
|
+
*/
|
|
20
|
+
writeString(str) {
|
|
21
|
+
this.writeLengthPrefixed(Buffer.from(str, "utf-8"));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Reads a length-prefixed ASCII string from the stream.
|
|
25
|
+
* {@link https://mojang.github.io/bedrock-protocol-docs/html/string.html | Not documented in the protocol docs}
|
|
26
|
+
* @returns The read string.
|
|
27
|
+
*/
|
|
28
|
+
readLELengthASCIIString() {
|
|
29
|
+
return this.read(this.readUnsignedIntLE()).toString("ascii");
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Writes a length-prefixed ASCII string to the stream.
|
|
33
|
+
* @param str - The string to write.
|
|
34
|
+
*/
|
|
35
|
+
writeLELengthASCIIString(str) {
|
|
36
|
+
const buf = Buffer.from(str, "ascii");
|
|
37
|
+
this.writeUnsignedIntLE(buf.byteLength);
|
|
38
|
+
this.write(buf);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Reads a length-prefixed buffer from the stream.
|
|
42
|
+
* @returns The length-prefixed buffer.
|
|
43
|
+
*/
|
|
44
|
+
readLengthPrefixed() {
|
|
45
|
+
return this.read(this.readUnsignedVarInt());
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Writes a length-prefixed buffer to the stream.
|
|
49
|
+
* @param buf - The buffer to append.
|
|
50
|
+
*/
|
|
51
|
+
writeLengthPrefixed(buf) {
|
|
52
|
+
this.writeUnsignedVarInt(buf.byteLength);
|
|
53
|
+
this.write(buf);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
53
57
|
export { NetworkBinaryStream as default };
|
|
54
|
-
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya0JpbmFyeVN0cmVhbS5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvTmV0d29ya0JpbmFyeVN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBleHRlbmRlZCB2ZXJzaW9uIG9mIHRoZSBCaW5hcnlTdHJlYW0gY2xhc3MgdGhhdCBpbmNsdWRlc1xuICogbWluZWNyYWZ0LXNwZWNpZmljIHNlcmlhbGl6YXRpb24gbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV0d29ya0JpbmFyeVN0cmVhbSBleHRlbmRzIEJpbmFyeVN0cmVhbSB7XG4gICAgLyoqXG4gICAgICogUmVhZHMgYSBzdHJpbmcgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvc3RyaW5nLmh0bWwgfCBOb3QgZG9jdW1lbnRlZCBpbiB0aGUgcHJvdG9jb2wgZG9jc31cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVhZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZExlbmd0aFByZWZpeGVkKCkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGVzIGEgc3RyaW5nIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlU3RyaW5nKHN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVMZW5ndGhQcmVmaXhlZChCdWZmZXIuZnJvbShzdHIsICd1dGYtOCcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIGxlbmd0aC1wcmVmaXhlZCBBU0NJSSBzdHJpbmcgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvc3RyaW5nLmh0bWwgfCBOb3QgZG9jdW1lbnRlZCBpbiB0aGUgcHJvdG9jb2wgZG9jc31cbiAgICAgKiBAcmV0dXJucyBUaGUgcmVhZCBzdHJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRMRUxlbmd0aEFTQ0lJU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWQodGhpcy5yZWFkVW5zaWduZWRJbnRMRSgpKS50b1N0cmluZygnYXNjaWknKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBsZW5ndGgtcHJlZml4ZWQgQVNDSUkgc3RyaW5nIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gd3JpdGUuXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlTEVMZW5ndGhBU0NJSVN0cmluZyhzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBidWYgPSBCdWZmZXIuZnJvbShzdHIsICdhc2NpaScpO1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRJbnRMRShidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMud3JpdGUoYnVmKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyBhIGxlbmd0aC1wcmVmaXhlZCBidWZmZXIgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm5zIFRoZSBsZW5ndGgtcHJlZml4ZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkTGVuZ3RoUHJlZml4ZWQoKTogQnVmZmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVhZCh0aGlzLnJlYWRVbnNpZ25lZFZhckludCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZXMgYSBsZW5ndGgtcHJlZml4ZWQgYnVmZmVyIHRvIHRoZSBzdHJlYW0uXG4gICAgICogQHBhcmFtIGJ1ZiAtIFRoZSBidWZmZXIgdG8gYXBwZW5kLlxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZUxlbmd0aFByZWZpeGVkKGJ1ZjogQnVmZmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZFZhckludChidWYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMud3JpdGUoYnVmKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQU1BLElBQXFCLHNCQUFyQixjQUFpRCxhQUFhOzs7Ozs7Q0FNMUQsYUFBNEI7RUFDeEIsT0FBTyxLQUFLLG9CQUFvQixDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT3RELFlBQW1CLEtBQW1CO0VBQ2xDLEtBQUssb0JBQW9CLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQzs7Ozs7OztDQVF2RCwwQkFBeUM7RUFDckMsT0FBTyxLQUFLLEtBQUssS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsUUFBUTs7Ozs7O0NBT2hFLHlCQUFnQyxLQUFtQjtFQUMvQyxNQUFNLE1BQU0sT0FBTyxLQUFLLEtBQUssUUFBUTtFQUNyQyxLQUFLLG1CQUFtQixJQUFJLFdBQVc7RUFDdkMsS0FBSyxNQUFNLElBQUk7Ozs7OztDQU9uQixxQkFBb0M7RUFDaEMsT0FBTyxLQUFLLEtBQUssS0FBSyxvQkFBb0IsQ0FBQzs7Ozs7O0NBTy9DLG9CQUEyQixLQUFtQjtFQUMxQyxLQUFLLG9CQUFvQixJQUFJLFdBQVc7RUFDeEMsS0FBSyxNQUFNLElBQUkifQ==
|
|
@@ -1,67 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, {
|
|
3
|
+
__esModule: { value: true },
|
|
4
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
5
|
+
});
|
|
6
|
+
//#region src/NetworkPacket.ts
|
|
7
|
+
/**
|
|
8
|
+
* Represents the network packet (aka DataPacket).
|
|
9
|
+
* This is just a serialization layer to include the packet header
|
|
10
|
+
* and to reduce redundancy in the packet classes.
|
|
11
|
+
* {@link https://mojang.github.io/bedrock-protocol-docs/html/packetHeader.html}
|
|
12
|
+
*/
|
|
13
|
+
var NetworkPacket = class NetworkPacket {
|
|
14
|
+
packetData;
|
|
15
|
+
static PID_MASK = 1023;
|
|
16
|
+
static SUB_CLIENT_MASK = 3;
|
|
17
|
+
static SENDER_SUB_CLIENT_SHIFT = 10;
|
|
18
|
+
static TARGET_SUB_CLIENT_SHIFT = 12;
|
|
19
|
+
senderSubClientId = 0;
|
|
20
|
+
targetSubClientId = 0;
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new network packet.
|
|
23
|
+
* @param packetData - The packet data to include in the network packet.
|
|
24
|
+
*/
|
|
25
|
+
constructor(packetData = null) {
|
|
26
|
+
this.packetData = packetData;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Serializes the network packet into a binary stream.
|
|
30
|
+
* @param stream - The binary stream to serialize into.
|
|
31
|
+
* @returns The serialized network packet as a Buffer.
|
|
32
|
+
*/
|
|
33
|
+
serialize(stream) {
|
|
34
|
+
if (this.packetData === null) throw new Error(`Cannot serialize packet without data, PID: ${this.id.toString(16)}`);
|
|
35
|
+
stream.writeUnsignedVarInt(this.id | this.senderSubClientId << NetworkPacket.SENDER_SUB_CLIENT_SHIFT | this.targetSubClientId << NetworkPacket.TARGET_SUB_CLIENT_SHIFT);
|
|
36
|
+
this.serializePayload(stream, this.packetData);
|
|
37
|
+
return stream.getBuffer();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Deserializes the network packet from a binary stream.
|
|
41
|
+
* @param stream - The binary stream to deserialize from.
|
|
42
|
+
*/
|
|
43
|
+
deserialize(stream) {
|
|
44
|
+
const header = stream.readUnsignedVarInt();
|
|
45
|
+
const pid = header & NetworkPacket.PID_MASK;
|
|
46
|
+
if (pid !== this.id) throw new Error(`NetworkPacket ID mismatch: expected ${this.id}, got ${pid}`);
|
|
47
|
+
this.senderSubClientId = header >> NetworkPacket.SENDER_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
|
|
48
|
+
this.targetSubClientId = header >> NetworkPacket.TARGET_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
|
|
49
|
+
try {
|
|
50
|
+
this.packetData = this.deserializePayload(stream);
|
|
51
|
+
} catch (e) {
|
|
52
|
+
throw new Error(`Error deserializing packet payload: ${e}`);
|
|
53
|
+
}
|
|
54
|
+
return this.packetData;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Gets the packet data.
|
|
58
|
+
* Probably will be removed in the future.
|
|
59
|
+
* @returns The packet data.
|
|
60
|
+
*/
|
|
61
|
+
getPacketData() {
|
|
62
|
+
return this.packetData;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//#endregion
|
|
66
66
|
exports.default = NetworkPacket;
|
|
67
|
-
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1BhY2tldC5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9OZXR3b3JrUGFja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIE5ldHdvcmtCaW5hcnlTdHJlYW0gZnJvbSAnLi9OZXR3b3JrQmluYXJ5U3RyZWFtJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBuZXR3b3JrIHBhY2tldCAoYWthIERhdGFQYWNrZXQpLlxuICogVGhpcyBpcyBqdXN0IGEgc2VyaWFsaXphdGlvbiBsYXllciB0byBpbmNsdWRlIHRoZSBwYWNrZXQgaGVhZGVyXG4gKiBhbmQgdG8gcmVkdWNlIHJlZHVuZGFuY3kgaW4gdGhlIHBhY2tldCBjbGFzc2VzLlxuICoge0BsaW5rIGh0dHBzOi8vbW9qYW5nLmdpdGh1Yi5pby9iZWRyb2NrLXByb3RvY29sLWRvY3MvaHRtbC9wYWNrZXRIZWFkZXIuaHRtbH1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYWJzdHJhY3QgY2xhc3MgTmV0d29ya1BhY2tldDxUPiB7XG4gICAgYWJzdHJhY3QgZ2V0IGlkKCk6IG51bWJlcjtcblxuICAgIC8vIFRoZSBhY3R1YWwgcGFja2V0IGlkIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBmaXJzdCAxMCBiaXRzIG9mIHRoZSBwYWNrZXQgSUQuXG4gICAgcHJpdmF0ZSBzdGF0aWMgUElEX01BU0sgPSAweDNmZjtcbiAgICBwcml2YXRlIHN0YXRpYyBTVUJfQ0xJRU5UX01BU0sgPSAweDAzO1xuXG4gICAgLy8gTmV4dCAyIGJpdHMgYXJlIHRoZSBzZW5kZXIgc3ViIGNsaWVudCBJRC5cbiAgICBwcml2YXRlIHN0YXRpYyBTRU5ERVJfU1VCX0NMSUVOVF9TSElGVCA9IDEwO1xuICAgIC8vIE5leHQgMiBiaXRzIGFyZSB0aGUgdGFyZ2V0IHN1YiBjbGllbnQgSUQuXG4gICAgcHJpdmF0ZSBzdGF0aWMgVEFSR0VUX1NVQl9DTElFTlRfU0hJRlQgPSAxMjtcblxuICAgIHB1YmxpYyBzZW5kZXJTdWJDbGllbnRJZCA9IDA7XG4gICAgcHVibGljIHRhcmdldFN1YkNsaWVudElkID0gMDtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgbmV0d29yayBwYWNrZXQuXG4gICAgICogQHBhcmFtIHBhY2tldERhdGEgLSBUaGUgcGFja2V0IGRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgbmV0d29yayBwYWNrZXQuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFja2V0RGF0YTogVCB8IG51bGwgPSBudWxsKSB7fVxuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplcyB0aGUgcGF5bG9hZCBvZiB0aGUgbmV0d29yayBwYWNrZXQgaW50byBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIHNlcmlhbGl6ZSBpbnRvLlxuICAgICAqIEBwYXJhbSBwYWNrZXREYXRhIC0gVGhlIHBhY2tldCBkYXRhIHRvIHNlcmlhbGl6ZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2VyaWFsaXplUGF5bG9hZChzdHJlYW06IE5ldHdvcmtCaW5hcnlTdHJlYW0sIHBhY2tldERhdGE6IFQpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplcyB0aGUgbmV0d29yayBwYWNrZXQgaW50byBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIHNlcmlhbGl6ZSBpbnRvLlxuICAgICAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIG5ldHdvcmsgcGFja2V0IGFzIGEgQnVmZmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXJpYWxpemUoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtKTogQnVmZmVyIHtcbiAgICAgICAgaWYgKHRoaXMucGFja2V0RGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2VyaWFsaXplIHBhY2tldCB3aXRob3V0IGRhdGEsIFBJRDogJHt0aGlzLmlkLnRvU3RyaW5nKDE2KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZFZhckludChcbiAgICAgICAgICAgIHRoaXMuaWQgfFxuICAgICAgICAgICAgICAgICh0aGlzLnNlbmRlclN1YkNsaWVudElkIDw8IE5ldHdvcmtQYWNrZXQuU0VOREVSX1NVQl9DTElFTlRfU0hJRlQpIHxcbiAgICAgICAgICAgICAgICAodGhpcy50YXJnZXRTdWJDbGllbnRJZCA8PCBOZXR3b3JrUGFja2V0LlRBUkdFVF9TVUJfQ0xJRU5UX1NISUZUKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtLCB0aGlzLnBhY2tldERhdGEpO1xuICAgICAgICByZXR1cm4gc3RyZWFtLmdldEJ1ZmZlcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VyaWFsaXplcyB0aGUgcGF5bG9hZCBvZiB0aGUgbmV0d29yayBwYWNrZXQgZnJvbSBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIGRlc2VyaWFsaXplIGZyb20uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGRlc2VyaWFsaXplUGF5bG9hZChzdHJlYW06IE5ldHdvcmtCaW5hcnlTdHJlYW0pOiBUO1xuXG4gICAgLyoqXG4gICAgICogRGVzZXJpYWxpemVzIHRoZSBuZXR3b3JrIHBhY2tldCBmcm9tIGEgYmluYXJ5IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0gc3RyZWFtIC0gVGhlIGJpbmFyeSBzdHJlYW0gdG8gZGVzZXJpYWxpemUgZnJvbS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZXJpYWxpemUoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtKTogVCB7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHN0cmVhbS5yZWFkVW5zaWduZWRWYXJJbnQoKTtcbiAgICAgICAgY29uc3QgcGlkID0gaGVhZGVyICYgTmV0d29ya1BhY2tldC5QSURfTUFTSztcbiAgICAgICAgaWYgKHBpZCAhPT0gdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOZXR3b3JrUGFja2V0IElEIG1pc21hdGNoOiBleHBlY3RlZCAke3RoaXMuaWR9LCBnb3QgJHtwaWR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZW5kZXJTdWJDbGllbnRJZCA9IChoZWFkZXIgPj4gTmV0d29ya1BhY2tldC5TRU5ERVJfU1VCX0NMSUVOVF9TSElGVCkgJiBOZXR3b3JrUGFja2V0LlNVQl9DTElFTlRfTUFTSztcbiAgICAgICAgdGhpcy50YXJnZXRTdWJDbGllbnRJZCA9IChoZWFkZXIgPj4gTmV0d29ya1BhY2tldC5UQVJHRVRfU1VCX0NMSUVOVF9TSElGVCkgJiBOZXR3b3JrUGFja2V0LlNVQl9DTElFTlRfTUFTSztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMucGFja2V0RGF0YSA9IHRoaXMuZGVzZXJpYWxpemVQYXlsb2FkKHN0cmVhbSk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZGVzZXJpYWxpemluZyBwYWNrZXQgcGF5bG9hZDogJHtlfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhY2tldERhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGFja2V0IGRhdGEuXG4gICAgICogUHJvYmFibHkgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gICAgICogQHJldHVybnMgVGhlIHBhY2tldCBkYXRhLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYWNrZXREYXRhKCk6IFQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFja2V0RGF0YTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVFBLElBQThCLGdCQUE5QixNQUE4QixjQUFpQjtDQW1CaEI7Q0FmM0IsT0FBZSxXQUFXO0NBQzFCLE9BQWUsa0JBQWtCO0NBR2pDLE9BQWUsMEJBQTBCO0NBRXpDLE9BQWUsMEJBQTBCO0NBRXpDLG9CQUEyQjtDQUMzQixvQkFBMkI7Ozs7O0NBTTNCLFlBQW1CLGFBQStCLE1BQU07RUFBN0IsS0FBQSxhQUFBOzs7Ozs7O0NBYzNCLFVBQWlCLFFBQXFDO0VBQ2xELElBQUksS0FBSyxlQUFlLE1BQ3BCLE1BQU0sSUFBSSxNQUFNLDhDQUE4QyxLQUFLLEdBQUcsU0FBUyxHQUFHLEdBQUc7RUFFekYsT0FBTyxvQkFDSCxLQUFLLEtBQ0EsS0FBSyxxQkFBcUIsY0FBYywwQkFDeEMsS0FBSyxxQkFBcUIsY0FBYyx3QkFDaEQ7RUFDRCxLQUFLLGlCQUFpQixRQUFRLEtBQUssV0FBVztFQUM5QyxPQUFPLE9BQU8sV0FBVzs7Ozs7O0NBYTdCLFlBQW1CLFFBQWdDO0VBQy9DLE1BQU0sU0FBUyxPQUFPLG9CQUFvQjtFQUMxQyxNQUFNLE1BQU0sU0FBUyxjQUFjO0VBQ25DLElBQUksUUFBUSxLQUFLLElBQ2IsTUFBTSxJQUFJLE1BQU0sdUNBQXVDLEtBQUssR0FBRyxRQUFRLE1BQU07RUFFakYsS0FBSyxvQkFBcUIsVUFBVSxjQUFjLDBCQUEyQixjQUFjO0VBQzNGLEtBQUssb0JBQXFCLFVBQVUsY0FBYywwQkFBMkIsY0FBYztFQUMzRixJQUFJO0dBQ0EsS0FBSyxhQUFhLEtBQUssbUJBQW1CLE9BQU87V0FDNUMsR0FBWTtHQUNqQixNQUFNLElBQUksTUFBTSx1Q0FBdUMsSUFBSTs7RUFFL0QsT0FBTyxLQUFLOzs7Ozs7O0NBUWhCLGdCQUFpQztFQUM3QixPQUFPLEtBQUsifQ==
|
package/dist/NetworkPacket.es.js
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
1
|
+
//#region src/NetworkPacket.ts
|
|
2
|
+
/**
|
|
3
|
+
* Represents the network packet (aka DataPacket).
|
|
4
|
+
* This is just a serialization layer to include the packet header
|
|
5
|
+
* and to reduce redundancy in the packet classes.
|
|
6
|
+
* {@link https://mojang.github.io/bedrock-protocol-docs/html/packetHeader.html}
|
|
7
|
+
*/
|
|
8
|
+
var NetworkPacket = class NetworkPacket {
|
|
9
|
+
packetData;
|
|
10
|
+
static PID_MASK = 1023;
|
|
11
|
+
static SUB_CLIENT_MASK = 3;
|
|
12
|
+
static SENDER_SUB_CLIENT_SHIFT = 10;
|
|
13
|
+
static TARGET_SUB_CLIENT_SHIFT = 12;
|
|
14
|
+
senderSubClientId = 0;
|
|
15
|
+
targetSubClientId = 0;
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new network packet.
|
|
18
|
+
* @param packetData - The packet data to include in the network packet.
|
|
19
|
+
*/
|
|
20
|
+
constructor(packetData = null) {
|
|
21
|
+
this.packetData = packetData;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Serializes the network packet into a binary stream.
|
|
25
|
+
* @param stream - The binary stream to serialize into.
|
|
26
|
+
* @returns The serialized network packet as a Buffer.
|
|
27
|
+
*/
|
|
28
|
+
serialize(stream) {
|
|
29
|
+
if (this.packetData === null) throw new Error(`Cannot serialize packet without data, PID: ${this.id.toString(16)}`);
|
|
30
|
+
stream.writeUnsignedVarInt(this.id | this.senderSubClientId << NetworkPacket.SENDER_SUB_CLIENT_SHIFT | this.targetSubClientId << NetworkPacket.TARGET_SUB_CLIENT_SHIFT);
|
|
31
|
+
this.serializePayload(stream, this.packetData);
|
|
32
|
+
return stream.getBuffer();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Deserializes the network packet from a binary stream.
|
|
36
|
+
* @param stream - The binary stream to deserialize from.
|
|
37
|
+
*/
|
|
38
|
+
deserialize(stream) {
|
|
39
|
+
const header = stream.readUnsignedVarInt();
|
|
40
|
+
const pid = header & NetworkPacket.PID_MASK;
|
|
41
|
+
if (pid !== this.id) throw new Error(`NetworkPacket ID mismatch: expected ${this.id}, got ${pid}`);
|
|
42
|
+
this.senderSubClientId = header >> NetworkPacket.SENDER_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
|
|
43
|
+
this.targetSubClientId = header >> NetworkPacket.TARGET_SUB_CLIENT_SHIFT & NetworkPacket.SUB_CLIENT_MASK;
|
|
44
|
+
try {
|
|
45
|
+
this.packetData = this.deserializePayload(stream);
|
|
46
|
+
} catch (e) {
|
|
47
|
+
throw new Error(`Error deserializing packet payload: ${e}`);
|
|
48
|
+
}
|
|
49
|
+
return this.packetData;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets the packet data.
|
|
53
|
+
* Probably will be removed in the future.
|
|
54
|
+
* @returns The packet data.
|
|
55
|
+
*/
|
|
56
|
+
getPacketData() {
|
|
57
|
+
return this.packetData;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
//#endregion
|
|
62
61
|
export { NetworkPacket as default };
|
|
63
|
-
|
|
62
|
+
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmV0d29ya1BhY2tldC5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvTmV0d29ya1BhY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBOZXR3b3JrQmluYXJ5U3RyZWFtIGZyb20gJy4vTmV0d29ya0JpbmFyeVN0cmVhbSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbmV0d29yayBwYWNrZXQgKGFrYSBEYXRhUGFja2V0KS5cbiAqIFRoaXMgaXMganVzdCBhIHNlcmlhbGl6YXRpb24gbGF5ZXIgdG8gaW5jbHVkZSB0aGUgcGFja2V0IGhlYWRlclxuICogYW5kIHRvIHJlZHVjZSByZWR1bmRhbmN5IGluIHRoZSBwYWNrZXQgY2xhc3Nlcy5cbiAqIHtAbGluayBodHRwczovL21vamFuZy5naXRodWIuaW8vYmVkcm9jay1wcm90b2NvbC1kb2NzL2h0bWwvcGFja2V0SGVhZGVyLmh0bWx9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFic3RyYWN0IGNsYXNzIE5ldHdvcmtQYWNrZXQ8VD4ge1xuICAgIGFic3RyYWN0IGdldCBpZCgpOiBudW1iZXI7XG5cbiAgICAvLyBUaGUgYWN0dWFsIHBhY2tldCBpZCBpcyByZXByZXNlbnRlZCBieSB0aGUgZmlyc3QgMTAgYml0cyBvZiB0aGUgcGFja2V0IElELlxuICAgIHByaXZhdGUgc3RhdGljIFBJRF9NQVNLID0gMHgzZmY7XG4gICAgcHJpdmF0ZSBzdGF0aWMgU1VCX0NMSUVOVF9NQVNLID0gMHgwMztcblxuICAgIC8vIE5leHQgMiBiaXRzIGFyZSB0aGUgc2VuZGVyIHN1YiBjbGllbnQgSUQuXG4gICAgcHJpdmF0ZSBzdGF0aWMgU0VOREVSX1NVQl9DTElFTlRfU0hJRlQgPSAxMDtcbiAgICAvLyBOZXh0IDIgYml0cyBhcmUgdGhlIHRhcmdldCBzdWIgY2xpZW50IElELlxuICAgIHByaXZhdGUgc3RhdGljIFRBUkdFVF9TVUJfQ0xJRU5UX1NISUZUID0gMTI7XG5cbiAgICBwdWJsaWMgc2VuZGVyU3ViQ2xpZW50SWQgPSAwO1xuICAgIHB1YmxpYyB0YXJnZXRTdWJDbGllbnRJZCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IG5ldHdvcmsgcGFja2V0LlxuICAgICAqIEBwYXJhbSBwYWNrZXREYXRhIC0gVGhlIHBhY2tldCBkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIG5ldHdvcmsgcGFja2V0LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhY2tldERhdGE6IFQgfCBudWxsID0gbnVsbCkge31cblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMgdGhlIHBheWxvYWQgb2YgdGhlIG5ldHdvcmsgcGFja2V0IGludG8gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBzZXJpYWxpemUgaW50by5cbiAgICAgKiBAcGFyYW0gcGFja2V0RGF0YSAtIFRoZSBwYWNrZXQgZGF0YSB0byBzZXJpYWxpemUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtLCBwYWNrZXREYXRhOiBUKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlcmlhbGl6ZXMgdGhlIG5ldHdvcmsgcGFja2V0IGludG8gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBzZXJpYWxpemUgaW50by5cbiAgICAgKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCBuZXR3b3JrIHBhY2tldCBhcyBhIEJ1ZmZlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VyaWFsaXplKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSk6IEJ1ZmZlciB7XG4gICAgICAgIGlmICh0aGlzLnBhY2tldERhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNlcmlhbGl6ZSBwYWNrZXQgd2l0aG91dCBkYXRhLCBQSUQ6ICR7dGhpcy5pZC50b1N0cmluZygxNil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQoXG4gICAgICAgICAgICB0aGlzLmlkIHxcbiAgICAgICAgICAgICAgICAodGhpcy5zZW5kZXJTdWJDbGllbnRJZCA8PCBOZXR3b3JrUGFja2V0LlNFTkRFUl9TVUJfQ0xJRU5UX1NISUZUKSB8XG4gICAgICAgICAgICAgICAgKHRoaXMudGFyZ2V0U3ViQ2xpZW50SWQgPDwgTmV0d29ya1BhY2tldC5UQVJHRVRfU1VCX0NMSUVOVF9TSElGVClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXJpYWxpemVQYXlsb2FkKHN0cmVhbSwgdGhpcy5wYWNrZXREYXRhKTtcbiAgICAgICAgcmV0dXJuIHN0cmVhbS5nZXRCdWZmZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlcmlhbGl6ZXMgdGhlIHBheWxvYWQgb2YgdGhlIG5ldHdvcmsgcGFja2V0IGZyb20gYSBiaW5hcnkgc3RyZWFtLlxuICAgICAqIEBwYXJhbSBzdHJlYW0gLSBUaGUgYmluYXJ5IHN0cmVhbSB0byBkZXNlcmlhbGl6ZSBmcm9tLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBkZXNlcmlhbGl6ZVBheWxvYWQoc3RyZWFtOiBOZXR3b3JrQmluYXJ5U3RyZWFtKTogVDtcblxuICAgIC8qKlxuICAgICAqIERlc2VyaWFsaXplcyB0aGUgbmV0d29yayBwYWNrZXQgZnJvbSBhIGJpbmFyeSBzdHJlYW0uXG4gICAgICogQHBhcmFtIHN0cmVhbSAtIFRoZSBiaW5hcnkgc3RyZWFtIHRvIGRlc2VyaWFsaXplIGZyb20uXG4gICAgICovXG4gICAgcHVibGljIGRlc2VyaWFsaXplKHN0cmVhbTogTmV0d29ya0JpbmFyeVN0cmVhbSk6IFQge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSBzdHJlYW0ucmVhZFVuc2lnbmVkVmFySW50KCk7XG4gICAgICAgIGNvbnN0IHBpZCA9IGhlYWRlciAmIE5ldHdvcmtQYWNrZXQuUElEX01BU0s7XG4gICAgICAgIGlmIChwaWQgIT09IHRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTmV0d29ya1BhY2tldCBJRCBtaXNtYXRjaDogZXhwZWN0ZWQgJHt0aGlzLmlkfSwgZ290ICR7cGlkfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VuZGVyU3ViQ2xpZW50SWQgPSAoaGVhZGVyID4+IE5ldHdvcmtQYWNrZXQuU0VOREVSX1NVQl9DTElFTlRfU0hJRlQpICYgTmV0d29ya1BhY2tldC5TVUJfQ0xJRU5UX01BU0s7XG4gICAgICAgIHRoaXMudGFyZ2V0U3ViQ2xpZW50SWQgPSAoaGVhZGVyID4+IE5ldHdvcmtQYWNrZXQuVEFSR0VUX1NVQl9DTElFTlRfU0hJRlQpICYgTmV0d29ya1BhY2tldC5TVUJfQ0xJRU5UX01BU0s7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLnBhY2tldERhdGEgPSB0aGlzLmRlc2VyaWFsaXplUGF5bG9hZChzdHJlYW0pO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGRlc2VyaWFsaXppbmcgcGFja2V0IHBheWxvYWQ6ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYWNrZXREYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhY2tldCBkYXRhLlxuICAgICAqIFByb2JhYmx5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLlxuICAgICAqIEByZXR1cm5zIFRoZSBwYWNrZXQgZGF0YS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFja2V0RGF0YSgpOiBUIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhY2tldERhdGE7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsSUFBOEIsZ0JBQTlCLE1BQThCLGNBQWlCO0NBbUJoQjtDQWYzQixPQUFlLFdBQVc7Q0FDMUIsT0FBZSxrQkFBa0I7Q0FHakMsT0FBZSwwQkFBMEI7Q0FFekMsT0FBZSwwQkFBMEI7Q0FFekMsb0JBQTJCO0NBQzNCLG9CQUEyQjs7Ozs7Q0FNM0IsWUFBbUIsYUFBK0IsTUFBTTtFQUE3QixLQUFBLGFBQUE7Ozs7Ozs7Q0FjM0IsVUFBaUIsUUFBcUM7RUFDbEQsSUFBSSxLQUFLLGVBQWUsTUFDcEIsTUFBTSxJQUFJLE1BQU0sOENBQThDLEtBQUssR0FBRyxTQUFTLEdBQUcsR0FBRztFQUV6RixPQUFPLG9CQUNILEtBQUssS0FDQSxLQUFLLHFCQUFxQixjQUFjLDBCQUN4QyxLQUFLLHFCQUFxQixjQUFjLHdCQUNoRDtFQUNELEtBQUssaUJBQWlCLFFBQVEsS0FBSyxXQUFXO0VBQzlDLE9BQU8sT0FBTyxXQUFXOzs7Ozs7Q0FhN0IsWUFBbUIsUUFBZ0M7RUFDL0MsTUFBTSxTQUFTLE9BQU8sb0JBQW9CO0VBQzFDLE1BQU0sTUFBTSxTQUFTLGNBQWM7RUFDbkMsSUFBSSxRQUFRLEtBQUssSUFDYixNQUFNLElBQUksTUFBTSx1Q0FBdUMsS0FBSyxHQUFHLFFBQVEsTUFBTTtFQUVqRixLQUFLLG9CQUFxQixVQUFVLGNBQWMsMEJBQTJCLGNBQWM7RUFDM0YsS0FBSyxvQkFBcUIsVUFBVSxjQUFjLDBCQUEyQixjQUFjO0VBQzNGLElBQUk7R0FDQSxLQUFLLGFBQWEsS0FBSyxtQkFBbUIsT0FBTztXQUM1QyxHQUFZO0dBQ2pCLE1BQU0sSUFBSSxNQUFNLHVDQUF1QyxJQUFJOztFQUUvRCxPQUFPLEtBQUs7Ozs7Ozs7Q0FRaEIsZ0JBQWlDO0VBQzdCLE9BQU8sS0FBSyJ9
|