@vaitosoi/minejs 0.2.1 → 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.
Files changed (80) hide show
  1. package/dist/base/aabb.d.ts +197 -0
  2. package/dist/base/aabb.d.ts.map +1 -0
  3. package/dist/base/aabb.js +576 -0
  4. package/dist/base/aabb.js.map +1 -0
  5. package/dist/base/bitset.d.ts +9 -0
  6. package/dist/base/bitset.d.ts.map +1 -0
  7. package/dist/base/bitset.js +46 -0
  8. package/dist/base/bitset.js.map +1 -0
  9. package/dist/base/block.d.ts +86 -0
  10. package/dist/base/block.d.ts.map +1 -0
  11. package/dist/base/block.js +232 -0
  12. package/dist/base/block.js.map +1 -0
  13. package/dist/base/direction.d.ts +153 -0
  14. package/dist/base/direction.d.ts.map +1 -0
  15. package/dist/base/direction.js +288 -0
  16. package/dist/base/direction.js.map +1 -0
  17. package/dist/base/entity.d.ts +43 -0
  18. package/dist/base/entity.d.ts.map +1 -0
  19. package/dist/base/entity.js +97 -0
  20. package/dist/base/entity.js.map +1 -0
  21. package/dist/base/error.d.ts +76 -0
  22. package/dist/base/error.d.ts.map +1 -0
  23. package/dist/base/error.js +141 -0
  24. package/dist/base/error.js.map +1 -0
  25. package/dist/base/event.d.ts +7 -0
  26. package/dist/base/event.d.ts.map +1 -0
  27. package/dist/base/event.js +3 -0
  28. package/dist/base/event.js.map +1 -0
  29. package/dist/base/math.d.ts +25 -0
  30. package/dist/base/math.d.ts.map +1 -0
  31. package/dist/base/math.js +69 -0
  32. package/dist/base/math.js.map +1 -0
  33. package/dist/base/player.d.ts +107 -0
  34. package/dist/base/player.d.ts.map +1 -0
  35. package/dist/base/player.js +543 -0
  36. package/dist/base/player.js.map +1 -0
  37. package/dist/base/registry.d.ts +50 -0
  38. package/dist/base/registry.d.ts.map +1 -0
  39. package/dist/base/registry.js +89 -0
  40. package/dist/base/registry.js.map +1 -0
  41. package/dist/base/tick.d.ts +19 -0
  42. package/dist/base/tick.d.ts.map +1 -0
  43. package/dist/base/tick.js +49 -0
  44. package/dist/base/tick.js.map +1 -0
  45. package/dist/base/typing.d.ts +3 -0
  46. package/dist/base/typing.d.ts.map +1 -0
  47. package/dist/base/typing.js +3 -0
  48. package/dist/base/typing.js.map +1 -0
  49. package/dist/client/auth.d.ts +39 -0
  50. package/dist/client/auth.d.ts.map +1 -0
  51. package/dist/client/auth.js +307 -0
  52. package/dist/client/auth.js.map +1 -0
  53. package/dist/client/client.d.ts +62 -0
  54. package/dist/client/client.d.ts.map +1 -0
  55. package/dist/client/client.js +98 -0
  56. package/dist/client/client.js.map +1 -0
  57. package/dist/client/static.d.ts +28 -0
  58. package/dist/client/static.d.ts.map +1 -0
  59. package/dist/client/static.js +43 -0
  60. package/dist/client/static.js.map +1 -0
  61. package/dist/client/tcp.d.ts +269 -0
  62. package/dist/client/tcp.d.ts.map +1 -0
  63. package/dist/client/tcp.js +838 -0
  64. package/dist/client/tcp.js.map +1 -0
  65. package/dist/index.d.ts +21 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/translator/decoder.d.ts +293 -0
  69. package/dist/translator/decoder.d.ts.map +1 -0
  70. package/dist/translator/decoder.js +668 -0
  71. package/dist/translator/decoder.js.map +1 -0
  72. package/dist/translator/encoder.d.ts +162 -0
  73. package/dist/translator/encoder.d.ts.map +1 -0
  74. package/dist/translator/encoder.js +430 -0
  75. package/dist/translator/encoder.js.map +1 -0
  76. package/dist/translator/static.d.ts +33 -0
  77. package/dist/translator/static.d.ts.map +1 -0
  78. package/dist/translator/static.js +42 -0
  79. package/dist/translator/static.js.map +1 -0
  80. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../src/base/bitset.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA6B;AAE7B;;GAEG;AACH,YAAoB,SAAQ,gBAAO;IACxB,YAAY,CAAC,SAAiB;QACjC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAI,IAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,SAAS,GAAG,SAAS,KAAK,CAAC,CAAC;QAEhC,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,2DAA2D;YAC3D,OAAQ,IAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3D,CAAC;QAED,8DAA8D;QAC9D,2DAA2D;QAC3D,8DAA8D;QAC9D,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;QAEhD,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACb,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAG,yBAAyB;gBAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,EAAE;gBACN,CAAC;gBACD,OAAO,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,CAAC;YACD,SAAS,EAAE,CAAC;YACZ,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC3B,OAAQ,IAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChE,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAAA,CAAC;IAEc,KAAK;QACjB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;CACJ"}
@@ -0,0 +1,86 @@
1
+ import { TCPClient } from "../client/tcp";
2
+ import { AABB, BaseAABB, VoxelShape } from "./aabb";
3
+ import { BaseVec3, Direction, Vec3 } from "./direction";
4
+ /**
5
+ * Represent a state of a block
6
+ */
7
+ export declare class BlockState {
8
+ owner: Block;
9
+ id: string;
10
+ properties: Record<string, any>;
11
+ boxes: BaseAABB[];
12
+ shape: VoxelShape;
13
+ constructor(owner: Block, id: string, properties: Record<string, any>, boxes: BaseAABB[]);
14
+ private get;
15
+ getFacing(): "north" | "south" | "west" | "east" | null;
16
+ }
17
+ /**
18
+ * Represent a block
19
+ */
20
+ export declare class Block {
21
+ type: string;
22
+ definitions: Record<"type" | "block_set_type" | string, any>;
23
+ properties: Record<string, string[]>;
24
+ states: BlockState[];
25
+ constructor(type: string, definitions: Record<"type" | "block_set_type" | string, any>, properties: Record<string, string[]>, states: Record<string, any> | BlockState[]);
26
+ private get;
27
+ getType(): {};
28
+ getFriction(): number;
29
+ getBounciness(): number;
30
+ getSpeedFactor(): number;
31
+ getClimbable(): boolean;
32
+ getJumpFactor(): number;
33
+ }
34
+ /**
35
+ * Somehow, this is an equivalent implementation of Minecraft `Level`
36
+ */
37
+ export declare class BlockManager {
38
+ private tcp;
39
+ constructor(tcp: TCPClient);
40
+ /**
41
+ * Check if the chunk section is loaded
42
+ */
43
+ hasChunkAt(x: number, y: number, z: number): boolean;
44
+ hasChunkAt(position: BaseVec3): boolean;
45
+ /**
46
+ * Get block state at position
47
+ */
48
+ at(x: number, y: number, z: number): BlockState | null;
49
+ at(position: BaseVec3): BlockState | null;
50
+ /**
51
+ * Query the entity in the section that intersec with BB
52
+ * @param queryBB The querying bounding box
53
+ * @returns
54
+ */
55
+ queryAABB(queryBB: AABB): VoxelShape[];
56
+ }
57
+ interface Context {
58
+ getBlockState: (position: BaseVec3) => VoxelShape;
59
+ from: Vec3;
60
+ to: Vec3;
61
+ }
62
+ /**
63
+ * For clipping math
64
+ *
65
+ * @hidden
66
+ */
67
+ export declare class BlockGetter {
68
+ static clip(from: Vec3, to: Vec3, context: Context): BlockHitResult | null;
69
+ static traverseBlocks<T, C = Context>(from: Vec3, to: Vec3, context: C, consumer: (context: C, position: BaseVec3) => T, missFactory: (context: C) => T): T;
70
+ }
71
+ /**
72
+ * For clipping math
73
+ *
74
+ * @hidden
75
+ */
76
+ export declare class BlockHitResult {
77
+ miss: boolean;
78
+ location: Vec3;
79
+ direction: Direction;
80
+ pos: BaseVec3;
81
+ constructor(miss: boolean, location: Vec3, direction: Direction, pos: BaseVec3);
82
+ static hit(location: Vec3, direction: Direction, pos: BaseVec3): BlockHitResult;
83
+ static miss(location: Vec3, direction: Direction, pos: BaseVec3): BlockHitResult;
84
+ }
85
+ export {};
86
+ //# sourceMappingURL=block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/base/block.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlockHitResult = exports.BlockGetter = exports.BlockManager = exports.Block = exports.BlockState = void 0;
4
+ const aabb_1 = require("./aabb");
5
+ const math_1 = require("./math");
6
+ const registry_1 = require("./registry");
7
+ const direction_1 = require("./direction");
8
+ /**
9
+ * Represent a state of a block
10
+ */
11
+ class BlockState {
12
+ owner;
13
+ id;
14
+ properties;
15
+ boxes;
16
+ shape;
17
+ constructor(owner, id, properties, boxes) {
18
+ this.owner = owner;
19
+ this.id = id;
20
+ this.properties = properties;
21
+ this.boxes = boxes;
22
+ const bbs = boxes.map(val => new aabb_1.AABB(val.minX, val.minY, val.minZ, val.maxX, val.maxY, val.maxZ));
23
+ this.shape = bbs.reduce((prevVoxel, currentBox) => aabb_1.VoxelShape.or(prevVoxel, aabb_1.VoxelShape.fromBox(currentBox)), aabb_1.VoxelShape.Empty);
24
+ }
25
+ get(field, defaultVal) {
26
+ if (field in this.properties)
27
+ return this.properties[field];
28
+ if (defaultVal)
29
+ return defaultVal;
30
+ return null;
31
+ }
32
+ getFacing() { return this.get("facing"); }
33
+ }
34
+ exports.BlockState = BlockState;
35
+ /**
36
+ * Represent a block
37
+ */
38
+ class Block {
39
+ type;
40
+ definitions;
41
+ properties;
42
+ states;
43
+ constructor(type, definitions, properties, states) {
44
+ this.type = type;
45
+ this.definitions = definitions;
46
+ this.properties = properties;
47
+ this.states = [];
48
+ states.forEach((obj) => this.states.push(obj instanceof BlockState ? obj : new BlockState(this, obj['id'], obj['properties'], obj['boxes'])));
49
+ }
50
+ get(field, defaultVal) {
51
+ if (field in this.definitions)
52
+ return this.definitions[field];
53
+ if (defaultVal)
54
+ return defaultVal;
55
+ return null;
56
+ }
57
+ getType() { return this.get("type"); }
58
+ getFriction() { return this.get("friction", 0.6); }
59
+ getBounciness() { return this.get("bounciness", 0); }
60
+ getSpeedFactor() { return this.get("speed_factor", 1); }
61
+ getClimbable() { return this.get("climbable", false); }
62
+ getJumpFactor() { return this.get("jump_factor", 1); }
63
+ }
64
+ exports.Block = Block;
65
+ /**
66
+ * Somehow, this is an equivalent implementation of Minecraft `Level`
67
+ */
68
+ class BlockManager {
69
+ tcp;
70
+ constructor(tcp) {
71
+ this.tcp = tcp;
72
+ }
73
+ hasChunkAt(a, b, c) {
74
+ this.tcp.checkReady();
75
+ const { x, y, z } = direction_1.Vec3.loadArgs(a, b, c);
76
+ const sx = Math.floor(x / 16), sy = Math.floor((y + 64) / 16), sz = Math.floor(z / 16);
77
+ // // console.log({
78
+ // key: `${this.tcp.player!.dimension}:${sx}:${sz}`,
79
+ // hasKey: `${this.tcp.player!.dimension}:${sx}:${sz}` in this.tcp.world!.chunks
80
+ // });
81
+ const section = this.tcp.world.chunks[`${this.tcp.player.dimension}:${sx}:${sz}`]?.sections[sy];
82
+ if (!section)
83
+ return false;
84
+ return true;
85
+ }
86
+ at(a, b, c) {
87
+ this.tcp.checkReady();
88
+ let { x, y, z } = direction_1.Vec3.loadArgs(a, b, c);
89
+ x = Math.floor(x);
90
+ y = Math.floor(y);
91
+ z = Math.floor(z);
92
+ const sx = Math.floor(x / 16), sy = Math.floor((y + 64) / 16), sz = Math.floor(z / 16);
93
+ const px = ((x % 16) + 16) % 16, py = ((y % 16) + 16) % 16, pz = ((z % 16) + 16) % 16;
94
+ const section = this.tcp.world.chunks[`${this.tcp.player.dimension}:${sx}:${sz}`]?.sections[sy]?.block;
95
+ if (!section)
96
+ return null;
97
+ if (section.data === null)
98
+ return registry_1.BlockRegistry.getState(section.palette[0].toString());
99
+ const dataArray = section.data;
100
+ const bitsPerEntry = section.bpe;
101
+ const entryIndex = px + (pz * 16) + (py * 16 * 16);
102
+ const entriesPerLong = Math.floor(64 / bitsPerEntry);
103
+ const entryMask = (1 << bitsPerEntry) - 1;
104
+ const longIndex = Math.floor(entryIndex / entriesPerLong);
105
+ const bit_index = entryIndex % entriesPerLong * bitsPerEntry;
106
+ const localId = Number((dataArray[longIndex] >> BigInt(bit_index)) & BigInt(entryMask));
107
+ const stateId = bitsPerEntry <= 8 ? section.palette[localId] : localId;
108
+ return registry_1.BlockRegistry.getState(String(stateId));
109
+ }
110
+ /**
111
+ * Query the entity in the section that intersec with BB
112
+ * @param queryBB The querying bounding box
113
+ * @returns
114
+ */
115
+ queryAABB(queryBB) {
116
+ this.tcp.checkReady();
117
+ const { minX, minY, minZ, maxX, maxY, maxZ } = queryBB;
118
+ const sx0 = Math.floor(minX), sx1 = Math.floor(maxX);
119
+ const sy0 = Math.floor(minY), sy1 = Math.floor(maxY);
120
+ const sz0 = Math.floor(minZ), sz1 = Math.floor(maxZ);
121
+ const blockShapes = [];
122
+ for (let x = sx0; x <= sx1; x++)
123
+ for (let y = sy0; y <= sy1; y++)
124
+ for (let z = sz0; z <= sz1; z++) {
125
+ const blockState = this.at(x, y, z);
126
+ if (blockState)
127
+ blockShapes.push(blockState.shape.move(x, y, z));
128
+ }
129
+ return blockShapes;
130
+ }
131
+ }
132
+ exports.BlockManager = BlockManager;
133
+ /**
134
+ * For clipping math
135
+ *
136
+ * @hidden
137
+ */
138
+ class BlockGetter {
139
+ static clip(from, to, context) {
140
+ return this.traverseBlocks(from, to, context, (context, pos) => {
141
+ const blockState = context.getBlockState(pos);
142
+ const { from, to } = context;
143
+ return blockState.clip(from, to, pos);
144
+ }, (context) => {
145
+ const { from, to } = context;
146
+ const delta = from.subtract(to);
147
+ return BlockHitResult.miss(to, direction_1.Direction.getApproximateNearest(delta), to);
148
+ });
149
+ }
150
+ static traverseBlocks(from, to, context, consumer, missFactory) {
151
+ let result;
152
+ if (from.equal(to))
153
+ return missFactory(context);
154
+ const toX = (0, math_1.lerp)(-math_1.Epsilon, to.x, from.x);
155
+ const toY = (0, math_1.lerp)(-math_1.Epsilon, to.y, from.y);
156
+ const toZ = (0, math_1.lerp)(-math_1.Epsilon, to.z, from.z);
157
+ const fromX = (0, math_1.lerp)(-math_1.Epsilon, from.x, to.x);
158
+ const fromY = (0, math_1.lerp)(-math_1.Epsilon, from.y, to.y);
159
+ const fromZ = (0, math_1.lerp)(-math_1.Epsilon, from.z, to.z);
160
+ let currentBlockX = Math.floor(fromX);
161
+ let currentBlockY = Math.floor(fromY);
162
+ let currentBlockZ = Math.floor(fromZ);
163
+ const firstBlock = consumer(context, { x: currentBlockX, y: currentBlockY, z: currentBlockZ });
164
+ if (firstBlock !== null)
165
+ return firstBlock;
166
+ const dx = toX - fromX;
167
+ const dy = toY - fromY;
168
+ const dz = toZ - fromZ;
169
+ const signX = (0, math_1.getSign)(dx);
170
+ const signY = (0, math_1.getSign)(dy);
171
+ const signZ = (0, math_1.getSign)(dz);
172
+ const tDeltaX = signX == 0 ? Infinity : signX / dx;
173
+ const tDeltaY = signY == 0 ? Infinity : signY / dy;
174
+ const tDeltaZ = signZ == 0 ? Infinity : signZ / dz;
175
+ let tX = tDeltaX * (signX > 0 ? 1 - (0, math_1.getFrac)(fromX) : (0, math_1.getFrac)(fromX));
176
+ let tY = tDeltaY * (signY > 0 ? 1 - (0, math_1.getFrac)(fromY) : (0, math_1.getFrac)(fromY));
177
+ let tZ = tDeltaZ * (signZ > 0 ? 1 - (0, math_1.getFrac)(fromZ) : (0, math_1.getFrac)(fromZ));
178
+ do {
179
+ if (tX <= 1.0 || tY <= 1.0 || tZ <= 1.0) {
180
+ if (tX < tY) {
181
+ if (tX < tZ) {
182
+ currentBlockX += signX;
183
+ tX += tDeltaX;
184
+ }
185
+ else {
186
+ currentBlockZ += signZ;
187
+ tZ += tDeltaZ;
188
+ }
189
+ }
190
+ else if (tY < tZ) {
191
+ currentBlockY += signY;
192
+ tY += tDeltaY;
193
+ }
194
+ else {
195
+ currentBlockZ += signZ;
196
+ tZ += tDeltaZ;
197
+ }
198
+ result = consumer(context, { x: currentBlockX, y: currentBlockY, z: currentBlockZ });
199
+ }
200
+ else {
201
+ return missFactory(context);
202
+ }
203
+ } while (result == null);
204
+ return result;
205
+ }
206
+ }
207
+ exports.BlockGetter = BlockGetter;
208
+ /**
209
+ * For clipping math
210
+ *
211
+ * @hidden
212
+ */
213
+ class BlockHitResult {
214
+ miss;
215
+ location;
216
+ direction;
217
+ pos;
218
+ constructor(miss, location, direction, pos) {
219
+ this.miss = miss;
220
+ this.location = location;
221
+ this.direction = direction;
222
+ this.pos = pos;
223
+ }
224
+ static hit(location, direction, pos) {
225
+ return new BlockHitResult(true, location, direction, pos);
226
+ }
227
+ static miss(location, direction, pos) {
228
+ return new BlockHitResult(true, location, direction, pos);
229
+ }
230
+ }
231
+ exports.BlockHitResult = BlockHitResult;
232
+ //# sourceMappingURL=block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/base/block.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ export interface BaseVec3 {
2
+ x: number;
3
+ y: number;
4
+ z: number;
5
+ }
6
+ export declare class Vec3 implements BaseVec3 {
7
+ static readonly Zero: Vec3;
8
+ static readonly XAxis: Vec3;
9
+ static readonly YAxis: Vec3;
10
+ static readonly ZAxis: Vec3;
11
+ /**
12
+ * Helper function for loading vec3 args
13
+ */
14
+ static loadArgs(a: BaseVec3 | number, b?: number, c?: number): BaseVec3;
15
+ x: number;
16
+ y: number;
17
+ z: number;
18
+ constructor(vec3: BaseVec3);
19
+ constructor(x: number, y: number, z: number);
20
+ /**
21
+ * Copy this object
22
+ */
23
+ copy(): Vec3;
24
+ /**
25
+ * Copy but just return the base value, not the whole instance
26
+ */
27
+ copyBase(): BaseVec3;
28
+ normalize(): Vec3;
29
+ dot(x: number, y: number, z: number): number;
30
+ dot(vec: BaseVec3): number;
31
+ cross(x: number, y: number, z: number): Vec3;
32
+ cross(vec: BaseVec3): Vec3;
33
+ add(x: number, y: number, z: number): Vec3;
34
+ add(vec: BaseVec3): Vec3;
35
+ subtract(x: number, y: number, z: number): Vec3;
36
+ subtract(vec: BaseVec3): Vec3;
37
+ multiply(a: number | BaseVec3): Vec3;
38
+ multiply(x: number, y: number, z: number): Vec3;
39
+ distanceTo(x: number, y: number, z: number): number;
40
+ distanceTo(vec: BaseVec3): number;
41
+ distanceToSqr(x: number, y: number, z: number): number;
42
+ distanceToSqr(vec: BaseVec3): number;
43
+ length(): number;
44
+ lengthSqr(): number;
45
+ equal(x: number, y: number, z: number): boolean;
46
+ equal(vec: BaseVec3): boolean;
47
+ /**
48
+ * Create new Vec3 with one updated value, keep the rest.
49
+ * @param axis
50
+ * @param value
51
+ */
52
+ with(axis: BaseAxis, value: number): Vec3;
53
+ /**
54
+ * Get value of an axis
55
+ * @param axis
56
+ * @returns
57
+ */
58
+ get(axis: BaseAxis): number;
59
+ horizontalDistance(): number;
60
+ horizontalDistanceSqr(): number;
61
+ scale(val: number): Vec3;
62
+ isFinite(): boolean;
63
+ }
64
+ export declare enum BaseAxis {
65
+ X = 0,
66
+ Y = 1,
67
+ Z = 2
68
+ }
69
+ /** @hidden */
70
+ export declare class Axis {
71
+ /**
72
+ * Helper function to return value corresponding to given axis
73
+ */
74
+ static choose<T>(axis: BaseAxis, x: T, y: T, z: T): T;
75
+ /**
76
+ * Collision math
77
+ */
78
+ static stepOrder(x: number, z: number): BaseAxis[];
79
+ }
80
+ /**
81
+ * For collision math.
82
+ *
83
+ * This is for "rotating" the Axis
84
+ *
85
+ * @hidden
86
+ */
87
+ export declare abstract class AxisCycle {
88
+ /**
89
+ * Don't rotate the Axis
90
+ */
91
+ static NONE: AxisCycle;
92
+ /**
93
+ * Move forward 1 unit
94
+ */
95
+ static FORWARD: AxisCycle;
96
+ /**
97
+ * Move forward 2 units, or backward 1 unit
98
+ *
99
+ * For the name explaination, in a cyclic three-value array, move forward 2 steps equals step backward 1 step.
100
+ *
101
+ * Example:
102
+ * ```
103
+ * You are here
104
+ * v
105
+ * [0, 1, 2]
106
+ * ```
107
+ * Now move two:
108
+ * ```
109
+ * Now you are here
110
+ * v
111
+ * [0, 1, 2]
112
+ * ```
113
+ * Thats equal to, step one backward:
114
+ * ```
115
+ * you still here
116
+ * v
117
+ * [0, 1, 2]
118
+ * ```
119
+ */
120
+ static BACKWARD: AxisCycle;
121
+ static Values: AxisCycle[];
122
+ static Axises: BaseAxis[];
123
+ abstract cycle(axis: BaseAxis): BaseAxis;
124
+ abstract cycleCoords<T>(x: T, y: T, z: T, axis: BaseAxis): T;
125
+ abstract inverse(): AxisCycle;
126
+ static between(from: BaseAxis, to: BaseAxis): AxisCycle;
127
+ static readonly isAxis = true;
128
+ }
129
+ /**
130
+ * For clipping math
131
+ *
132
+ * @hidden
133
+ */
134
+ export declare class Direction {
135
+ index3D: number;
136
+ axis: BaseAxis;
137
+ normal: Vec3;
138
+ static readonly DOWN: Direction;
139
+ static readonly UP: Direction;
140
+ static readonly NORTH: Direction;
141
+ static readonly SOUTH: Direction;
142
+ static readonly WEST: Direction;
143
+ static readonly EAST: Direction;
144
+ static readonly Values: Direction[];
145
+ constructor(index3D: number, axis: BaseAxis, normal: Vec3);
146
+ static getApproximateNearest(x: number, y: number, z: number): Direction;
147
+ static getApproximateNearest(vec: BaseVec3): Direction;
148
+ }
149
+ export interface Angle {
150
+ yaw: number;
151
+ pitch: number;
152
+ }
153
+ //# sourceMappingURL=direction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction.d.ts","sourceRoot":"","sources":["../../src/base/direction.ts"],"names":[],"mappings":"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"}