@vaitosoi/minejs 0.2.0 → 0.2.2
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/base/aabb.d.ts +197 -0
- package/dist/base/aabb.d.ts.map +1 -0
- package/dist/base/aabb.js +576 -0
- package/dist/base/aabb.js.map +1 -0
- package/dist/base/bitset.d.ts +9 -0
- package/dist/base/bitset.d.ts.map +1 -0
- package/dist/base/bitset.js +46 -0
- package/dist/base/bitset.js.map +1 -0
- package/dist/base/block.d.ts +86 -0
- package/dist/base/block.d.ts.map +1 -0
- package/dist/base/block.js +232 -0
- package/dist/base/block.js.map +1 -0
- package/dist/base/direction.d.ts +153 -0
- package/dist/base/direction.d.ts.map +1 -0
- package/dist/base/direction.js +288 -0
- package/dist/base/direction.js.map +1 -0
- package/dist/base/entity.d.ts +43 -0
- package/dist/base/entity.d.ts.map +1 -0
- package/dist/base/entity.js +97 -0
- package/dist/base/entity.js.map +1 -0
- package/dist/base/error.d.ts +76 -0
- package/dist/base/error.d.ts.map +1 -0
- package/dist/base/error.js +141 -0
- package/dist/base/error.js.map +1 -0
- package/dist/base/event.d.ts +7 -0
- package/dist/base/event.d.ts.map +1 -0
- package/dist/base/event.js +3 -0
- package/dist/base/event.js.map +1 -0
- package/dist/base/math.d.ts +25 -0
- package/dist/base/math.d.ts.map +1 -0
- package/dist/base/math.js +69 -0
- package/dist/base/math.js.map +1 -0
- package/dist/base/player.d.ts +107 -0
- package/dist/base/player.d.ts.map +1 -0
- package/dist/base/player.js +543 -0
- package/dist/base/player.js.map +1 -0
- package/dist/base/registry.d.ts +50 -0
- package/dist/base/registry.d.ts.map +1 -0
- package/dist/base/registry.js +89 -0
- package/dist/base/registry.js.map +1 -0
- package/dist/base/tick.d.ts +19 -0
- package/dist/base/tick.d.ts.map +1 -0
- package/dist/base/tick.js +49 -0
- package/dist/base/tick.js.map +1 -0
- package/dist/base/typing.d.ts +3 -0
- package/dist/base/typing.d.ts.map +1 -0
- package/dist/base/typing.js +3 -0
- package/dist/base/typing.js.map +1 -0
- package/dist/client/auth.d.ts +39 -0
- package/dist/client/auth.d.ts.map +1 -0
- package/dist/client/auth.js +307 -0
- package/dist/client/auth.js.map +1 -0
- package/dist/client/client.d.ts +62 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +98 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/static.d.ts +28 -0
- package/dist/client/static.d.ts.map +1 -0
- package/dist/client/static.js +43 -0
- package/dist/client/static.js.map +1 -0
- package/dist/client/tcp.d.ts +269 -0
- package/dist/client/tcp.d.ts.map +1 -0
- package/dist/client/tcp.js +838 -0
- package/dist/client/tcp.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/translator/decoder.d.ts +293 -0
- package/dist/translator/decoder.d.ts.map +1 -0
- package/dist/translator/decoder.js +668 -0
- package/dist/translator/decoder.js.map +1 -0
- package/dist/translator/encoder.d.ts +162 -0
- package/dist/translator/encoder.d.ts.map +1 -0
- package/dist/translator/encoder.js +430 -0
- package/dist/translator/encoder.js.map +1 -0
- package/dist/translator/static.d.ts +33 -0
- package/dist/translator/static.d.ts.map +1 -0
- package/dist/translator/static.js +42 -0
- package/dist/translator/static.js.map +1 -0
- package/package.json +10 -10
- package/src/base/aabb.ts +2 -0
- package/src/base/block.ts +4 -0
- package/src/base/direction.ts +5 -0
- package/src/base/error.ts +16 -0
- package/src/base/event.ts +1 -1
- package/src/base/math.ts +10 -0
- package/src/base/typing.ts +1 -0
- package/src/client/static.ts +4 -0
- package/src/translator/encoder.ts +2 -2
- package/src/translator/static.ts +9 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** @hidden */
|
|
2
|
+
export declare const SEGMENT_BITS = 127;
|
|
3
|
+
/** @hidden */
|
|
4
|
+
export declare const CONTINUE_BIT = 128;
|
|
5
|
+
/** @hidden */
|
|
6
|
+
export declare const MAX_QUANTIZED_VALUE = 32766;
|
|
7
|
+
/** @hidden */
|
|
8
|
+
export declare const CONTINUATION_FLAG: bigint;
|
|
9
|
+
/** @hidden */
|
|
10
|
+
export declare const SCALE_BITS: bigint;
|
|
11
|
+
/** @hidden */
|
|
12
|
+
export declare enum Tag {
|
|
13
|
+
End = 0,
|
|
14
|
+
Byte = 1,
|
|
15
|
+
Short = 2,
|
|
16
|
+
Int = 3,
|
|
17
|
+
Long = 4,
|
|
18
|
+
Float = 5,
|
|
19
|
+
Double = 6,
|
|
20
|
+
ByteArray = 7,
|
|
21
|
+
String = 8,
|
|
22
|
+
List = 9,
|
|
23
|
+
Compound = 10,
|
|
24
|
+
IntArray = 11,
|
|
25
|
+
LongArray = 12
|
|
26
|
+
}
|
|
27
|
+
/** @hidden */
|
|
28
|
+
export type FixedSizeTag = Extract<Tag, Tag.Byte | Tag.Short | Tag.Int | Tag.Long | Tag.Float | Tag.Double>;
|
|
29
|
+
/** @hidden */
|
|
30
|
+
export declare const isTag: (tag: any) => tag is Tag;
|
|
31
|
+
/** @hidden */
|
|
32
|
+
export declare const isFixedSizeTag: (tag: Tag) => tag is FixedSizeTag;
|
|
33
|
+
//# sourceMappingURL=static.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../src/translator/static.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,eAAO,MAAM,YAAY,MAAO,CAAC;AACjC,cAAc;AACd,eAAO,MAAM,YAAY,MAAO,CAAC;AACjC,cAAc;AACd,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,cAAc;AACd,eAAO,MAAM,iBAAiB,QAAe,CAAC;AAC9C,cAAc;AACd,eAAO,MAAM,UAAU,QAAe,CAAC;AAEvC,cAAc;AACd,oBAAY,GAAG;IACX,GAAG,IAAO;IACV,IAAI,IAAO;IACX,KAAK,IAAO;IACZ,GAAG,IAAO;IACV,IAAI,IAAO;IACX,KAAK,IAAO;IACZ,MAAM,IAAO;IACb,SAAS,IAAO;IAChB,MAAM,IAAO;IACb,IAAI,IAAO;IACX,QAAQ,KAAO;IACf,QAAQ,KAAO;IACf,SAAS,KAAO;CACnB;AAED,cAAc;AACd,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAClC,GAAG,CAAC,IAAI,GACN,GAAG,CAAC,KAAK,GACT,GAAG,CAAC,GAAG,GACP,GAAG,CAAC,IAAI,GACR,GAAG,CAAC,KAAK,GACT,GAAG,CAAC,MAAM,CAAC,CAAC;AAElB,cAAc;AACd,eAAO,MAAM,KAAK,QAAS,GAAG,KAAG,GAAG,IAAI,GACN,CAAC;AAEnC,cAAc;AACd,eAAO,MAAM,cAAc,QAAS,GAAG,KAAG,GAAG,IAAI,YAQ5C,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFixedSizeTag = exports.isTag = exports.Tag = exports.SCALE_BITS = exports.CONTINUATION_FLAG = exports.MAX_QUANTIZED_VALUE = exports.CONTINUE_BIT = exports.SEGMENT_BITS = void 0;
|
|
4
|
+
/** @hidden */
|
|
5
|
+
exports.SEGMENT_BITS = 0x7F;
|
|
6
|
+
/** @hidden */
|
|
7
|
+
exports.CONTINUE_BIT = 0x80;
|
|
8
|
+
/** @hidden */
|
|
9
|
+
exports.MAX_QUANTIZED_VALUE = 32766;
|
|
10
|
+
/** @hidden */
|
|
11
|
+
exports.CONTINUATION_FLAG = BigInt(0x04);
|
|
12
|
+
/** @hidden */
|
|
13
|
+
exports.SCALE_BITS = BigInt(0x03);
|
|
14
|
+
/** @hidden */
|
|
15
|
+
var Tag;
|
|
16
|
+
(function (Tag) {
|
|
17
|
+
Tag[Tag["End"] = 0] = "End";
|
|
18
|
+
Tag[Tag["Byte"] = 1] = "Byte";
|
|
19
|
+
Tag[Tag["Short"] = 2] = "Short";
|
|
20
|
+
Tag[Tag["Int"] = 3] = "Int";
|
|
21
|
+
Tag[Tag["Long"] = 4] = "Long";
|
|
22
|
+
Tag[Tag["Float"] = 5] = "Float";
|
|
23
|
+
Tag[Tag["Double"] = 6] = "Double";
|
|
24
|
+
Tag[Tag["ByteArray"] = 7] = "ByteArray";
|
|
25
|
+
Tag[Tag["String"] = 8] = "String";
|
|
26
|
+
Tag[Tag["List"] = 9] = "List";
|
|
27
|
+
Tag[Tag["Compound"] = 10] = "Compound";
|
|
28
|
+
Tag[Tag["IntArray"] = 11] = "IntArray";
|
|
29
|
+
Tag[Tag["LongArray"] = 12] = "LongArray";
|
|
30
|
+
})(Tag || (exports.Tag = Tag = {}));
|
|
31
|
+
/** @hidden */
|
|
32
|
+
const isTag = (tag) => Object.keys(Tag).includes(tag);
|
|
33
|
+
exports.isTag = isTag;
|
|
34
|
+
/** @hidden */
|
|
35
|
+
const isFixedSizeTag = (tag) => (0, exports.isTag)(tag) && (tag === Tag.Byte ||
|
|
36
|
+
tag === Tag.Short ||
|
|
37
|
+
tag === Tag.Int ||
|
|
38
|
+
tag === Tag.Long ||
|
|
39
|
+
tag === Tag.Float ||
|
|
40
|
+
tag === Tag.Double);
|
|
41
|
+
exports.isFixedSizeTag = isFixedSizeTag;
|
|
42
|
+
//# sourceMappingURL=static.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/translator/static.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACD,QAAA,YAAY,GAAG,IAAI,CAAC;AACjC,cAAc;AACD,QAAA,YAAY,GAAG,IAAI,CAAC;AACjC,cAAc;AACD,QAAA,mBAAmB,GAAG,KAAK,CAAC;AACzC,cAAc;AACD,QAAA,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9C,cAAc;AACD,QAAA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAEvC,cAAc;AACd,IAAY,GAcX;AAdD,WAAY,GAAG;IACX,2BAAU,CAAA;IACV,6BAAW,CAAA;IACX,+BAAY,CAAA;IACZ,2BAAU,CAAA;IACV,6BAAW,CAAA;IACX,+BAAY,CAAA;IACZ,iCAAa,CAAA;IACb,uCAAgB,CAAA;IAChB,iCAAa,CAAA;IACb,6BAAW,CAAA;IACX,sCAAe,CAAA;IACf,sCAAe,CAAA;IACf,wCAAgB,CAAA;AACpB,CAAC,EAdW,GAAG,aAAH,GAAG,GAAH,GAAG,QAcd;AAWD,cAAc;AACP,MAAM,KAAK,GAAG,CAAC,GAAQ,EAAc,EAAE,CAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AADtB,QAAA,KAAK,GAAL,KAAK,CACiB;AAEnC,cAAc;AACP,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAuB,EAAE,CAC5D,IAAA,QAAA,KAAK,EAAC,GAAG,CAAC,IAAI,CACV,GAAG,KAAK,GAAG,CAAC,IAAI;IAChB,GAAG,KAAK,GAAG,CAAC,KAAK;IACjB,GAAG,KAAK,GAAG,CAAC,GAAG;IACf,GAAG,KAAK,GAAG,CAAC,IAAI;IAChB,GAAG,KAAK,GAAG,CAAC,KAAK;IACjB,GAAG,KAAK,GAAG,CAAC,MAAM,CACrB,CAAC;AARO,QAAA,cAAc,GAAd,cAAc,CAQrB"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaitosoi/minejs",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "A Minecraft client package",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
|
-
"url": "https://github.com/VaitoSoi/minejs"
|
|
7
|
+
"url": "git+https://github.com/VaitoSoi/minejs"
|
|
8
8
|
},
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"registry": "https://registry.npmjs.org/",
|
|
11
11
|
"access": "public"
|
|
12
12
|
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"minecraft",
|
|
15
|
+
"node"
|
|
16
|
+
],
|
|
17
|
+
"author": {
|
|
18
|
+
"name": "Vaito",
|
|
19
|
+
"email": "duyduy15456@gmail.com"
|
|
20
|
+
},
|
|
13
21
|
"main": "dist/index.js",
|
|
14
22
|
"typings": "dist/index.d.ts",
|
|
15
23
|
"engines": {
|
|
@@ -29,14 +37,6 @@
|
|
|
29
37
|
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
30
38
|
"typescript-eslint": "^8.60.1"
|
|
31
39
|
},
|
|
32
|
-
"keywords": [
|
|
33
|
-
"minecraft",
|
|
34
|
-
"node"
|
|
35
|
-
],
|
|
36
|
-
"author": {
|
|
37
|
-
"name": "Vaito",
|
|
38
|
-
"email": "duyduy15456@gmail.com"
|
|
39
|
-
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"bitset": "^5.2.3"
|
|
42
42
|
},
|
package/src/base/aabb.ts
CHANGED
package/src/base/block.ts
CHANGED
|
@@ -156,6 +156,8 @@ interface Context {
|
|
|
156
156
|
|
|
157
157
|
/**
|
|
158
158
|
* For clipping math
|
|
159
|
+
*
|
|
160
|
+
* @hidden
|
|
159
161
|
*/
|
|
160
162
|
export class BlockGetter {
|
|
161
163
|
public static clip(from: Vec3, to: Vec3, context: Context) {
|
|
@@ -234,6 +236,8 @@ export class BlockGetter {
|
|
|
234
236
|
|
|
235
237
|
/**
|
|
236
238
|
* For clipping math
|
|
239
|
+
*
|
|
240
|
+
* @hidden
|
|
237
241
|
*/
|
|
238
242
|
export class BlockHitResult {
|
|
239
243
|
constructor(
|
package/src/base/direction.ts
CHANGED
|
@@ -202,6 +202,7 @@ export enum BaseAxis {
|
|
|
202
202
|
Z
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
+
/** @hidden */
|
|
205
206
|
export class Axis {
|
|
206
207
|
/**
|
|
207
208
|
* Helper function to return value corresponding to given axis
|
|
@@ -227,6 +228,8 @@ export class Axis {
|
|
|
227
228
|
* For collision math.
|
|
228
229
|
*
|
|
229
230
|
* This is for "rotating" the Axis
|
|
231
|
+
*
|
|
232
|
+
* @hidden
|
|
230
233
|
*/
|
|
231
234
|
export abstract class AxisCycle {
|
|
232
235
|
/**
|
|
@@ -309,6 +312,8 @@ export abstract class AxisCycle {
|
|
|
309
312
|
|
|
310
313
|
/**
|
|
311
314
|
* For clipping math
|
|
315
|
+
*
|
|
316
|
+
* @hidden
|
|
312
317
|
*/
|
|
313
318
|
export class Direction {
|
|
314
319
|
public static readonly DOWN = new Direction(0, BaseAxis.Y, new Vec3(0, -1, 0));
|
package/src/base/error.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @hidden */
|
|
1
2
|
export class UnexpectedValue extends Error {
|
|
2
3
|
constructor(
|
|
3
4
|
public type: string,
|
|
@@ -11,90 +12,105 @@ export class UnexpectedValue extends Error {
|
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
|
|
15
|
+
/** @hidden */
|
|
14
16
|
export class NumberTooBig extends Error {
|
|
15
17
|
constructor(public number: number | bigint) {
|
|
16
18
|
super("provided number is exceeded system limit (64 bits or 8 byte), got " + number.toString());
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
|
|
22
|
+
/** @hidden */
|
|
20
23
|
export class StringSizeExceedLimit extends Error {
|
|
21
24
|
constructor() {
|
|
22
25
|
super("read string size is exceed buffer limit");
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
|
|
29
|
+
/** @hidden */
|
|
26
30
|
export class InvalidValue extends Error {
|
|
27
31
|
constructor(public type: string, public got: string) {
|
|
28
32
|
super(`got invalid value for ${type}: ${got}`);
|
|
29
33
|
}
|
|
30
34
|
}
|
|
31
35
|
|
|
36
|
+
/** @hidden */
|
|
32
37
|
export class SockerIsNotWritable extends Error {
|
|
33
38
|
constructor() {
|
|
34
39
|
super("socket is not writable, do you connect it before?");
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
|
|
43
|
+
/** @hidden */
|
|
38
44
|
export class CantGetMsAuthToken extends Error {
|
|
39
45
|
constructor() {
|
|
40
46
|
super("can't get microsoft auth token, maybe the responding request is invalid");
|
|
41
47
|
}
|
|
42
48
|
}
|
|
43
49
|
|
|
50
|
+
/** @hidden */
|
|
44
51
|
export class CantGetMsAccessToken extends Error {
|
|
45
52
|
constructor() {
|
|
46
53
|
super("can't get microsoft access token");
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
56
|
|
|
57
|
+
/** @hidden */
|
|
50
58
|
export class AuthError extends Error {
|
|
51
59
|
constructor(public error: string) {
|
|
52
60
|
super(`got oauth error: ${error}, for more info: https://datatracker.ietf.org/doc/html/rfc6749#section-5.2`);
|
|
53
61
|
}
|
|
54
62
|
}
|
|
55
63
|
|
|
64
|
+
/** @hidden */
|
|
56
65
|
export class XboxError extends Error {
|
|
57
66
|
constructor(public code: string) {
|
|
58
67
|
super(`xbox error code: ${code}`);
|
|
59
68
|
}
|
|
60
69
|
}
|
|
61
70
|
|
|
71
|
+
/** @hidden */
|
|
62
72
|
export class ProfileNotFound extends Error {
|
|
63
73
|
constructor() {
|
|
64
74
|
super("cant find your minecraft profile, do you own minecraft or set up the profile?");
|
|
65
75
|
}
|
|
66
76
|
}
|
|
67
77
|
|
|
78
|
+
/** @hidden */
|
|
68
79
|
export class ProfileError extends Error {
|
|
69
80
|
constructor(public code: string, public message: string) {
|
|
70
81
|
super(`profile error: ${code}: ${message}`);
|
|
71
82
|
}
|
|
72
83
|
}
|
|
73
84
|
|
|
85
|
+
/** @hidden */
|
|
74
86
|
export class AuthDenied extends Error {
|
|
75
87
|
constructor() {
|
|
76
88
|
super("the authorization request was denied");
|
|
77
89
|
}
|
|
78
90
|
}
|
|
79
91
|
|
|
92
|
+
/** @hidden */
|
|
80
93
|
export class AuthTokenExpired extends Error {
|
|
81
94
|
constructor() {
|
|
82
95
|
super("device token is expired, please try again");
|
|
83
96
|
}
|
|
84
97
|
}
|
|
85
98
|
|
|
99
|
+
/** @hidden */
|
|
86
100
|
export class MissingAuthOption extends Error {
|
|
87
101
|
constructor() {
|
|
88
102
|
super("you need to provide auth option to be able to play in premium server");
|
|
89
103
|
}
|
|
90
104
|
}
|
|
91
105
|
|
|
106
|
+
/** @hidden */
|
|
92
107
|
export class RegistryItemNotFound extends Error {
|
|
93
108
|
constructor(public item: string) {
|
|
94
109
|
super(`cant find registry item: ${item}`);
|
|
95
110
|
}
|
|
96
111
|
}
|
|
97
112
|
|
|
113
|
+
/** @hidden */
|
|
98
114
|
export class ClientNotReady extends Error {
|
|
99
115
|
constructor() {
|
|
100
116
|
super(`client is not ready`);
|
package/src/base/event.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/** @see https://github.com/andywer/typed-emitter */
|
|
2
2
|
export interface TypedEmmiter<Events extends object> {
|
|
3
3
|
on: <K extends keyof Events>(event: K, func: Events[K] extends any[] ? (...args: Events[K]) => void : never) => void,
|
|
4
4
|
once: <K extends keyof Events>(event: K, func: Events[K] extends any[] ? (...args: Events[K]) => void : never) => void,
|
package/src/base/math.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
|
|
3
|
+
/** @hidden */
|
|
3
4
|
export const Epsilon = 1.0e-7; // 1^-7
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Convert player name into UUID
|
|
7
8
|
*
|
|
8
9
|
* Use for offline account
|
|
10
|
+
*
|
|
11
|
+
* @hidden
|
|
9
12
|
*/
|
|
10
13
|
export function computeUUID(playerName: string): Buffer {
|
|
11
14
|
const md5 = createHash("md5").update(playerName).digest();
|
|
@@ -17,8 +20,10 @@ export function computeUUID(playerName: string): Buffer {
|
|
|
17
20
|
return md5;
|
|
18
21
|
}
|
|
19
22
|
|
|
23
|
+
/** @hidden */
|
|
20
24
|
export const minBigInt = (...args: bigint[]) => args.reduce((min, val) => val < min ? val : min);
|
|
21
25
|
|
|
26
|
+
/** @hidden */
|
|
22
27
|
export function lowerBoundBinarySearch(from: number, to: number, condition: (index: number) => boolean) {
|
|
23
28
|
let i = to - from;
|
|
24
29
|
while (true) {
|
|
@@ -38,14 +43,19 @@ export function lowerBoundBinarySearch(from: number, to: number, condition: (ind
|
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
45
|
|
|
46
|
+
/** @hidden */
|
|
41
47
|
export const equal = (a: number, b: number) => Math.abs(a - b) < Epsilon;
|
|
42
48
|
|
|
49
|
+
/** @hidden */
|
|
43
50
|
export const lerp = (factor: number, min: number, max: number) => min + (max - min) * factor;
|
|
44
51
|
|
|
52
|
+
/** @hidden */
|
|
45
53
|
export const getSign = (a: number) => a === 0 ? 0 : a > 0 ? 1 : -1;
|
|
46
54
|
|
|
55
|
+
/** @hidden */
|
|
47
56
|
export const getFrac = (a: number) => a - Math.floor(a);
|
|
48
57
|
|
|
58
|
+
/** @hidden */
|
|
49
59
|
export function clamp(a: number, min: number, max: number) {
|
|
50
60
|
if (a < min) return min;
|
|
51
61
|
if (a > max) return max;
|
package/src/base/typing.ts
CHANGED
package/src/client/static.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @hidden */
|
|
1
2
|
export const SectionsPerChunk: Record<string, number> = {
|
|
2
3
|
"minecraft:overworld": 24,
|
|
3
4
|
"minecraft:overworld_caves": 24,
|
|
@@ -5,6 +6,7 @@ export const SectionsPerChunk: Record<string, number> = {
|
|
|
5
6
|
"minecraft:the_nether": 8,
|
|
6
7
|
};
|
|
7
8
|
|
|
9
|
+
/** @hidden */
|
|
8
10
|
export const LevelHeightLimit: Record<string, [min: number, max: number]> = {
|
|
9
11
|
"minecraft:overworld": [-64, 320],
|
|
10
12
|
"minecraft:overworld_caves": [-64, 320],
|
|
@@ -21,6 +23,7 @@ export const LevelHeightLimit: Record<string, [min: number, max: number]> = {
|
|
|
21
23
|
* @param x relative within chunk column
|
|
22
24
|
* @param y world height
|
|
23
25
|
* @param z relative within chunk column
|
|
26
|
+
* @hidden
|
|
24
27
|
*/
|
|
25
28
|
export const packBlockPos = (x: number, y: number, z: number) => y << 8 & z << 4 & x;
|
|
26
29
|
|
|
@@ -29,6 +32,7 @@ export const packBlockPos = (x: number, y: number, z: number) => y << 8 & z << 4
|
|
|
29
32
|
* Unpacked block position within a chunk column from an integer
|
|
30
33
|
*
|
|
31
34
|
* @returns unpacked position
|
|
35
|
+
* @hidden
|
|
32
36
|
*/
|
|
33
37
|
export const readPackedBlockPos = (packed: number) => ({
|
|
34
38
|
x: packed & 0xF,
|
|
@@ -228,7 +228,7 @@ export class BinaryEncoder {
|
|
|
228
228
|
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
|
|
231
|
+
type CompoundField = any | {
|
|
232
232
|
tag: Tag,
|
|
233
233
|
value: any,
|
|
234
234
|
}
|
|
@@ -239,7 +239,7 @@ const isFloat = (n: number | bigint) =>
|
|
|
239
239
|
(typeof (n) == "number" && n % 1 !== 0) ||
|
|
240
240
|
(typeof (n) == "bigint" && n % BigInt(1) !== BigInt(0));
|
|
241
241
|
|
|
242
|
-
|
|
242
|
+
function getTagOfNumber(n: number | bigint): FixedSizeTag {
|
|
243
243
|
if (isFloat(n)) {
|
|
244
244
|
if (-Math.pow(2, 4 * 8 - 1) <= n && n <= Math.pow(2, 4 * 8 - 1) - 1) return Tag.Float;
|
|
245
245
|
else if (BigInt(-Math.pow(2, 8 * 8 - 1)) <= n && n <= BigInt(Math.pow(2, 8 * 8 - 1) - 1)) return Tag.Double;
|
package/src/translator/static.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
/** @hidden */
|
|
1
2
|
export const SEGMENT_BITS = 0x7F;
|
|
3
|
+
/** @hidden */
|
|
2
4
|
export const CONTINUE_BIT = 0x80;
|
|
5
|
+
/** @hidden */
|
|
3
6
|
export const MAX_QUANTIZED_VALUE = 32766;
|
|
7
|
+
/** @hidden */
|
|
4
8
|
export const CONTINUATION_FLAG = BigInt(0x04);
|
|
9
|
+
/** @hidden */
|
|
5
10
|
export const SCALE_BITS = BigInt(0x03);
|
|
6
11
|
|
|
12
|
+
/** @hidden */
|
|
7
13
|
export enum Tag {
|
|
8
14
|
End = 0x00,
|
|
9
15
|
Byte = 0x01,
|
|
@@ -20,6 +26,7 @@ export enum Tag {
|
|
|
20
26
|
LongArray = 0x0C,
|
|
21
27
|
}
|
|
22
28
|
|
|
29
|
+
/** @hidden */
|
|
23
30
|
export type FixedSizeTag = Extract<Tag,
|
|
24
31
|
Tag.Byte
|
|
25
32
|
| Tag.Short
|
|
@@ -28,9 +35,11 @@ export type FixedSizeTag = Extract<Tag,
|
|
|
28
35
|
| Tag.Float
|
|
29
36
|
| Tag.Double>;
|
|
30
37
|
|
|
38
|
+
/** @hidden */
|
|
31
39
|
export const isTag = (tag: any): tag is Tag =>
|
|
32
40
|
Object.keys(Tag).includes(tag);
|
|
33
41
|
|
|
42
|
+
/** @hidden */
|
|
34
43
|
export const isFixedSizeTag = (tag: Tag): tag is FixedSizeTag =>
|
|
35
44
|
isTag(tag) && (
|
|
36
45
|
tag === Tag.Byte ||
|