@jsprismarine/protocol 0.14.0 → 0.14.1-unstable-20260512202428
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 +18 -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,23 @@
|
|
|
1
1
|
# @jsprismarine/protocol
|
|
2
2
|
|
|
3
|
+
## 0.14.1-unstable-20260512202428
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`cd05900`](https://github.com/JSPrismarine/JSPrismarine/commit/cd05900b01564ff279516a77423f3c1d8baffbfa) Thanks [@filiphsps](https://github.com/filiphsps)! - Drop the redundant per-package `.npmignore` files. Each `package.json` already has a `files` whitelist (`["dist", "CHANGELOG.md", "README.md"]`) that npm treats as the authoritative include list, so the `.npmignore` entries were dead weight — and broad patterns like `node_modules/`, `src/`, and `packages/` risked masking content from `dist/` (e.g. the bundled `dist/node_modules/**` in `@jsprismarine/client`). With the whitelist as the single source of truth, every tarball now contains the full built `dist/`.
|
|
8
|
+
|
|
9
|
+
- [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab) Thanks [@filiphsps](https://github.com/filiphsps)! - Tidy up doc generation and break a Vite 8 / Rolldown circular load:
|
|
10
|
+
- Teach typedoc about the `@todo` block tag (plus the rest of TSDoc's standard tags) so internal todo comments stop emitting "unknown block tag" warnings.
|
|
11
|
+
- Fix the `@document` path on `Logger` so typedoc can resolve `docs/log-levels.md` from the package directory.
|
|
12
|
+
- Defer `CommandSyntaxException.BUILT_IN_EXCEPTIONS` construction to a lazy getter, and wrap every `BuiltInExceptions` static field in a memoized factory so no `new SimpleCommandExceptionType(...)` / `new DynamicCommandExceptionType(...)` runs during BuiltInExceptions's static-initialization phase. The previous code crashed under Vite 8 (Rolldown) with `default is not a constructor` whenever the `BuiltInExceptions -> SimpleCommandExceptionType -> CommandSyntaxException -> BuiltInExceptions` module load cycle was traversed before the exception type imports were fully resolved.
|
|
13
|
+
- Make `SimpleCommandExceptionType` and `DynamicCommandExceptionType` available as both named and default exports so the existing default-import call sites keep working while the new named-import call sites side-step Rolldown's stricter cyclic live-binding rules.
|
|
14
|
+
|
|
15
|
+
- [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab) Thanks [@filiphsps](https://github.com/filiphsps)! - Bump Vite to 8.0.12 across the root, every workspace package, and the generator template.
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [[`cd05900`](https://github.com/JSPrismarine/JSPrismarine/commit/cd05900b01564ff279516a77423f3c1d8baffbfa), [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab), [`f962e79`](https://github.com/JSPrismarine/JSPrismarine/commit/f962e79719d55688113e3ab2a8c663d6049a9fab)]:
|
|
18
|
+
- @jsprismarine/minecraft@0.14.1-unstable-20260512202428
|
|
19
|
+
- @jsprismarine/nbt@0.14.1-unstable-20260512202428
|
|
20
|
+
|
|
3
21
|
## 0.14.0
|
|
4
22
|
|
|
5
23
|
### 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
|