@vaitosoi/minejs 0.2.2 → 0.4.0

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 (149) hide show
  1. package/README.md +1 -1
  2. package/assets/minecraft/26.2/packets.json +4758 -0
  3. package/dist/base/buffer.d.ts +2 -0
  4. package/dist/base/buffer.d.ts.map +1 -0
  5. package/dist/base/buffer.js +12 -0
  6. package/dist/base/buffer.js.map +1 -0
  7. package/dist/base/error.d.ts +59 -3
  8. package/dist/base/error.d.ts.map +1 -1
  9. package/dist/base/error.js +123 -7
  10. package/dist/base/error.js.map +1 -1
  11. package/dist/base/http.d.ts +2 -0
  12. package/dist/base/http.d.ts.map +1 -0
  13. package/dist/base/http.js +14 -0
  14. package/dist/base/http.js.map +1 -0
  15. package/dist/base/math.d.ts +22 -1
  16. package/dist/base/math.d.ts.map +1 -1
  17. package/dist/base/math.js +49 -2
  18. package/dist/base/math.js.map +1 -1
  19. package/dist/base/typing.d.ts +7 -1
  20. package/dist/base/typing.d.ts.map +1 -1
  21. package/dist/client/auth.d.ts +41 -7
  22. package/dist/client/auth.d.ts.map +1 -1
  23. package/dist/client/auth.js +96 -39
  24. package/dist/client/auth.js.map +1 -1
  25. package/dist/client/client.d.ts +73 -17
  26. package/dist/client/client.d.ts.map +1 -1
  27. package/dist/client/client.js +111 -44
  28. package/dist/client/client.js.map +1 -1
  29. package/dist/client/tcp.d.ts +17 -206
  30. package/dist/client/tcp.d.ts.map +1 -1
  31. package/dist/client/tcp.js +37 -715
  32. package/dist/client/tcp.js.map +1 -1
  33. package/dist/index.d.ts +12 -12
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +12 -12
  36. package/dist/index.js.map +1 -1
  37. package/dist/message/link.d.ts +10 -0
  38. package/dist/message/link.d.ts.map +1 -0
  39. package/dist/message/link.js +22 -0
  40. package/dist/message/link.js.map +1 -0
  41. package/dist/message/sigCache.d.ts +13 -0
  42. package/dist/message/sigCache.d.ts.map +1 -0
  43. package/dist/message/sigCache.js +26 -0
  44. package/dist/message/sigCache.js.map +1 -0
  45. package/dist/{translator → packet}/decoder.d.ts +14 -1
  46. package/dist/packet/decoder.d.ts.map +1 -0
  47. package/dist/{translator → packet}/decoder.js +24 -3
  48. package/dist/packet/decoder.js.map +1 -0
  49. package/dist/packet/dispatcher.d.ts +53 -0
  50. package/dist/packet/dispatcher.d.ts.map +1 -0
  51. package/dist/packet/dispatcher.js +738 -0
  52. package/dist/packet/dispatcher.js.map +1 -0
  53. package/dist/{translator → packet}/encoder.d.ts +4 -3
  54. package/dist/packet/encoder.d.ts.map +1 -0
  55. package/dist/{translator → packet}/encoder.js +18 -7
  56. package/dist/packet/encoder.js.map +1 -0
  57. package/dist/packet/static.d.ts.map +1 -0
  58. package/dist/packet/static.js.map +1 -0
  59. package/dist/{base → physics}/aabb.d.ts +2 -2
  60. package/dist/physics/aabb.d.ts.map +1 -0
  61. package/dist/{base → physics}/aabb.js +5 -5
  62. package/dist/physics/aabb.js.map +1 -0
  63. package/dist/physics/direction.d.ts.map +1 -0
  64. package/dist/physics/direction.js.map +1 -0
  65. package/dist/{base → physics}/player.d.ts +25 -28
  66. package/dist/physics/player.d.ts.map +1 -0
  67. package/dist/{base → physics}/player.js +81 -68
  68. package/dist/physics/player.js.map +1 -0
  69. package/dist/version/codec.d.ts +18 -0
  70. package/dist/version/codec.d.ts.map +1 -0
  71. package/dist/version/codec.js +235 -0
  72. package/dist/version/codec.js.map +1 -0
  73. package/dist/version/registry.d.ts +236 -0
  74. package/dist/version/registry.d.ts.map +1 -0
  75. package/dist/version/registry.js +284 -0
  76. package/dist/version/registry.js.map +1 -0
  77. package/dist/{base → world}/block.d.ts +5 -5
  78. package/dist/world/block.d.ts.map +1 -0
  79. package/dist/{base → world}/block.js +13 -13
  80. package/dist/world/block.js.map +1 -0
  81. package/dist/{base → world}/entity.d.ts +4 -4
  82. package/dist/world/entity.d.ts.map +1 -0
  83. package/dist/{base → world}/entity.js +6 -6
  84. package/dist/world/entity.js.map +1 -0
  85. package/dist/world/state.d.ts +175 -0
  86. package/dist/world/state.d.ts.map +1 -0
  87. package/dist/world/state.js +163 -0
  88. package/dist/world/state.js.map +1 -0
  89. package/dist/world/tick.d.ts.map +1 -0
  90. package/dist/world/tick.js.map +1 -0
  91. package/package.json +7 -2
  92. package/src/base/buffer.ts +12 -0
  93. package/src/base/error.ts +93 -4
  94. package/src/base/http.ts +10 -0
  95. package/src/base/math.ts +55 -3
  96. package/src/base/typing.ts +9 -1
  97. package/src/client/auth.ts +130 -52
  98. package/src/client/client.ts +182 -50
  99. package/src/client/tcp.ts +45 -967
  100. package/src/index.ts +12 -12
  101. package/src/message/link.ts +17 -0
  102. package/src/message/sigCache.ts +25 -0
  103. package/src/{translator → packet}/decoder.ts +24 -3
  104. package/src/packet/dispatcher.ts +919 -0
  105. package/src/{translator → packet}/encoder.ts +20 -9
  106. package/src/{base → physics}/aabb.ts +5 -5
  107. package/src/{base → physics}/player.ts +106 -65
  108. package/src/version/codec.ts +248 -0
  109. package/src/version/registry.ts +328 -0
  110. package/src/{base → world}/block.ts +12 -11
  111. package/src/{base → world}/entity.ts +5 -5
  112. package/src/world/state.ts +300 -0
  113. package/test/adapter/index.ts +14 -0
  114. package/test/client/index.ts +28 -21
  115. package/test/json/index.ts +3 -0
  116. package/dist/base/aabb.d.ts.map +0 -1
  117. package/dist/base/aabb.js.map +0 -1
  118. package/dist/base/block.d.ts.map +0 -1
  119. package/dist/base/block.js.map +0 -1
  120. package/dist/base/direction.d.ts.map +0 -1
  121. package/dist/base/direction.js.map +0 -1
  122. package/dist/base/entity.d.ts.map +0 -1
  123. package/dist/base/entity.js.map +0 -1
  124. package/dist/base/player.d.ts.map +0 -1
  125. package/dist/base/player.js.map +0 -1
  126. package/dist/base/registry.d.ts +0 -50
  127. package/dist/base/registry.d.ts.map +0 -1
  128. package/dist/base/registry.js +0 -89
  129. package/dist/base/registry.js.map +0 -1
  130. package/dist/base/tick.d.ts.map +0 -1
  131. package/dist/base/tick.js.map +0 -1
  132. package/dist/translator/decoder.d.ts.map +0 -1
  133. package/dist/translator/decoder.js.map +0 -1
  134. package/dist/translator/encoder.d.ts.map +0 -1
  135. package/dist/translator/encoder.js.map +0 -1
  136. package/dist/translator/static.d.ts.map +0 -1
  137. package/dist/translator/static.js.map +0 -1
  138. package/src/base/registry.ts +0 -87
  139. /package/assets/minecraft/{blocks.json → 26.2/blocks.json} +0 -0
  140. /package/assets/minecraft/{entities.json → 26.2/entities.json} +0 -0
  141. /package/dist/{translator → packet}/static.d.ts +0 -0
  142. /package/dist/{translator → packet}/static.js +0 -0
  143. /package/dist/{base → physics}/direction.d.ts +0 -0
  144. /package/dist/{base → physics}/direction.js +0 -0
  145. /package/dist/{base → world}/tick.d.ts +0 -0
  146. /package/dist/{base → world}/tick.js +0 -0
  147. /package/src/{translator → packet}/static.ts +0 -0
  148. /package/src/{base → physics}/direction.ts +0 -0
  149. /package/src/{base → world}/tick.ts +0 -0
@@ -1,24 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Player = exports.MoverType = exports.MoveDirection = void 0;
3
+ exports.Player = exports.MoverType = exports.Input = void 0;
4
4
  const direction_1 = require("./direction");
5
5
  const aabb_1 = require("./aabb");
6
- const block_1 = require("./block");
7
- const math_1 = require("./math");
8
- const error_1 = require("./error");
6
+ const block_1 = require("../world/block");
7
+ const math_1 = require("../base/math");
8
+ const error_1 = require("../base/error");
9
9
  const static_1 = require("../client/static");
10
- var MoveDirection;
11
- (function (MoveDirection) {
12
- MoveDirection["Forward"] = "W";
13
- MoveDirection["Backward"] = "S";
14
- MoveDirection["Left"] = "A";
15
- MoveDirection["Right"] = "D";
16
- })(MoveDirection || (exports.MoveDirection = MoveDirection = {}));
10
+ var Input;
11
+ (function (Input) {
12
+ Input["Forward"] = "W";
13
+ Input["Backward"] = "S";
14
+ Input["Left"] = "A";
15
+ Input["Right"] = "D";
16
+ Input["Crouching"] = "shift";
17
+ Input["Jump"] = "space";
18
+ Input["Sprint"] = "cttl";
19
+ })(Input || (exports.Input = Input = {}));
17
20
  const VectorMovement = {
18
- [MoveDirection.Forward]: new direction_1.Vec3(0, 0, 1),
19
- [MoveDirection.Backward]: new direction_1.Vec3(0, 0, -1),
20
- [MoveDirection.Left]: new direction_1.Vec3(1, 0, 0),
21
- [MoveDirection.Right]: new direction_1.Vec3(-1, 0, 0),
21
+ [Input.Forward]: new direction_1.Vec3(0, 0, 1),
22
+ [Input.Backward]: new direction_1.Vec3(0, 0, -1),
23
+ [Input.Left]: new direction_1.Vec3(1, 0, 0),
24
+ [Input.Right]: new direction_1.Vec3(-1, 0, 0),
25
+ [Input.Crouching]: direction_1.Vec3.Zero,
26
+ [Input.Jump]: direction_1.Vec3.Zero,
27
+ [Input.Sprint]: direction_1.Vec3.Zero,
22
28
  };
23
29
  /**
24
30
  * Not used for now
@@ -32,37 +38,43 @@ var MoverType;
32
38
  MoverType[MoverType["SHULKER"] = 4] = "SHULKER";
33
39
  })(MoverType || (exports.MoverType = MoverType = {}));
34
40
  class Player {
41
+ state;
42
+ on;
35
43
  entities;
36
44
  blocks;
37
- tcp;
38
45
  fallDistance = 0;
39
46
  deltaMovement = direction_1.Vec3.Zero;
40
47
  supportBlockPos = null;
41
48
  // Moving state
42
49
  // TODO: need is sprinting
43
50
  heldInputs = new Set();
44
- isCrouncing = false;
45
- isJumping = false;
46
51
  lastPos = null;
47
52
  lastAngle = null;
48
53
  positionReminder = 0;
54
+ noJumpDelay = 0;
49
55
  // Collision
50
56
  horizontalCollision = false;
51
57
  verticalCollision = false; // For debuging now
52
58
  onGround = true;
53
59
  lastHorizontalCollision = false;
54
60
  lastOnGround = true;
55
- constructor(entities, blocks, tcp) {
61
+ constructor(state, on, entities, blocks) {
62
+ this.state = state;
63
+ this.on = on;
56
64
  this.entities = entities;
57
65
  this.blocks = blocks;
58
- this.tcp = tcp;
59
- this.tcp.on("playerPosition", () => {
66
+ this.on("playerPosition", () => {
60
67
  this.onGround = true;
61
68
  this.horizontalCollision = false;
62
69
  this.fallDistance = 0;
63
- this.deltaMovement = new direction_1.Vec3(this.tcp.player.velocity);
70
+ this.deltaMovement = new direction_1.Vec3(this.state.player.velocity);
71
+ this.setInitialVal();
64
72
  });
65
73
  }
74
+ sendPlayerPos = () => { throw new error_1.NotImplemented(); };
75
+ sendPlayerPosRot = () => { throw new error_1.NotImplemented(); };
76
+ sendPlayerRot = () => { throw new error_1.NotImplemented(); };
77
+ sendPlayerStatus = () => { throw new error_1.NotImplemented(); };
66
78
  /**
67
79
  * Set initial value
68
80
  */
@@ -78,8 +90,6 @@ class Player {
78
90
  this.deltaMovement = direction_1.Vec3.Zero;
79
91
  this.supportBlockPos = null;
80
92
  this.heldInputs = new Set();
81
- this.isCrouncing = false;
82
- this.isJumping = false;
83
93
  this.lastPos = null;
84
94
  this.lastAngle = null;
85
95
  this.positionReminder = 0;
@@ -102,22 +112,11 @@ class Player {
102
112
  * Release all key
103
113
  */
104
114
  releaseAllInputs() { this.heldInputs.clear(); }
105
- /**
106
- * Press and hold shift. Do nothing for now
107
- */
108
- pressShift() { this.isCrouncing = true; }
109
- /**
110
- * Release shift
111
- */
112
- releaseShift() { this.isCrouncing = false; }
113
- /**
114
- * Press and hold space. Do nothing for now
115
- */
116
- pressSpace() { this.isJumping = true; }
117
- /**
118
- * Release shift
119
- */
120
- releaseSpace() { this.isJumping = false; }
115
+ get isCrouncing() { return this.heldInputs.has(Input.Crouching); }
116
+ ;
117
+ get isJumping() { return this.heldInputs.has(Input.Jump); }
118
+ ;
119
+ get isSprinting() { return this.heldInputs.has(Input.Sprint); }
121
120
  getInputVector() {
122
121
  let vec = direction_1.Vec3.Zero;
123
122
  for (const held of this.heldInputs)
@@ -126,20 +125,27 @@ class Player {
126
125
  }
127
126
  /* Getting helper, from TCP client */
128
127
  getPos() {
129
- this.tcp.checkReady();
130
- return new direction_1.Vec3(this.tcp.player.position);
128
+ this.state.checkReady();
129
+ return new direction_1.Vec3(this.state.player.position);
131
130
  }
132
131
  setPos(pos) {
133
- this.tcp.checkReady();
134
- this.tcp.player.position = pos.copyBase();
132
+ this.state.checkReady();
133
+ this.state.enqueueMutation((state) => state.player.position = pos.copyBase());
135
134
  }
136
135
  getAngle() {
137
- this.tcp.checkReady();
138
- return this.tcp.player.angle;
136
+ this.state.checkReady();
137
+ return this.state.player.angle;
138
+ }
139
+ setAngle(yaw, pitch) {
140
+ this.state.checkReady();
141
+ this.state.enqueueMutation((state) => state.player.angle = {
142
+ yaw: yaw % 360,
143
+ pitch: pitch % 360
144
+ });
139
145
  }
140
146
  getDimension() {
141
- this.tcp.checkReady();
142
- return this.tcp.player.dimension;
147
+ this.state.checkReady();
148
+ return this.state.player.dimension;
143
149
  }
144
150
  setDeltaMovement(a, b, c) {
145
151
  const vec3 = a instanceof direction_1.Vec3 ? a : new direction_1.Vec3(direction_1.Vec3.loadArgs(a, b, c));
@@ -206,26 +212,26 @@ class Player {
206
212
  * Ticking
207
213
  */
208
214
  tick() {
209
- if (!this.tcp.isReady())
215
+ if (!this.state.isReady())
210
216
  return;
211
217
  if (!this.lastPos || !this.lastAngle)
212
218
  throw new error_1.ClientNotReady();
213
219
  // console.log("tick");
214
220
  // console.log(this.getPos());
215
221
  this.aiStep();
216
- const { x, y, z } = this.getPos(), { x: xLast, y: yLast, z: zLast } = this.lastPos, { yaw: xRot, pitch: yRot } = this.getAngle(), { yaw: xRotLast, pitch: yRotLast } = this.lastAngle;
222
+ const { x, y, z } = this.getPos(), { x: xLast, y: yLast, z: zLast } = this.lastPos, { yaw, yaw: xRot, pitch, pitch: yRot } = this.getAngle(), { yaw: xRotLast, pitch: yRotLast } = this.lastAngle;
217
223
  const deltaX = x - xLast, deltaY = y - yLast, deltaZ = z - zLast, deltaYRot = yRot - yRotLast, deltaXRot = xRot - xRotLast;
218
224
  this.positionReminder++;
219
225
  const move = new direction_1.Vec3(deltaX, deltaY, deltaZ).lengthSqr() > (2e-4 * 2e-4) || this.positionReminder > 20, rot = deltaXRot !== 0 || deltaYRot !== 0;
220
226
  if (move && rot)
221
- this.tcp.sendPlayerPosRot(this.getPos(), this.getAngle(), this.onGround, this.horizontalCollision);
227
+ this.sendPlayerPosRot(this.getPos(), this.getAngle(), this.onGround, this.horizontalCollision);
222
228
  else if (move)
223
- this.tcp.sendPlayerPos(this.getPos(), this.onGround, this.horizontalCollision);
229
+ this.sendPlayerPos(this.getPos(), this.onGround, this.horizontalCollision);
224
230
  else if (rot)
225
- this.tcp.sendPlayerRot(this.getAngle(), this.onGround, this.horizontalCollision);
231
+ this.sendPlayerRot(this.getAngle(), this.onGround, this.horizontalCollision);
226
232
  else if (this.onGround !== this.lastOnGround ||
227
233
  this.horizontalCollision !== this.lastHorizontalCollision)
228
- this.tcp.sendPlayerStatus(this.onGround, this.horizontalCollision);
234
+ this.sendPlayerStatus(this.onGround, this.horizontalCollision);
229
235
  if (move) {
230
236
  this.lastPos = this.getPos();
231
237
  this.positionReminder = 0;
@@ -236,6 +242,9 @@ class Player {
236
242
  this.lastHorizontalCollision = this.horizontalCollision;
237
243
  }
238
244
  aiStep() {
245
+ if (this.noJumpDelay > 0) {
246
+ this.noJumpDelay--;
247
+ }
239
248
  // eslint-disable-next-line prefer-const
240
249
  let { x, y, z } = this.deltaMovement;
241
250
  if (this.deltaMovement.horizontalDistanceSqr() < 9e-6) {
@@ -243,12 +252,17 @@ class Player {
243
252
  z = 0;
244
253
  }
245
254
  this.setDeltaMovement(x, y, z);
246
- if (this.isJumping) {
255
+ if (this.isJumping && this.noJumpDelay === 0) {
247
256
  const jumpPower = this.getJumpFactor();
248
257
  if (jumpPower > 1e-5) {
249
258
  const { x: dx, y: dy, z: dz } = this.deltaMovement;
250
259
  this.setDeltaMovement(dx, Math.max(dy, jumpPower), dz);
260
+ if (this.isSprinting) {
261
+ const yawInRad = this.getAngle().yaw * (Math.PI / 180.0);
262
+ this.setDeltaMovement(this.deltaMovement.add(new direction_1.Vec3(-Math.sin(yawInRad) * 0.2, 0.0, Math.cos(yawInRad) * 0.2)));
263
+ }
251
264
  }
265
+ this.noJumpDelay = 15; // Original value to 10
252
266
  }
253
267
  // TODO: Handle in fluid
254
268
  // TODO: Handle potion effect: Slow falling and Levitation
@@ -267,13 +281,14 @@ class Player {
267
281
  const { x, y, z } = this.getPos();
268
282
  const inBlock = this.blocks.at(x, y, z);
269
283
  const belowBlock = this.blocks.at(x, y - 0.5, z);
270
- return inBlock.owner.getJumpFactor() === 1 ? belowBlock.owner.getJumpFactor() : inBlock.owner.getJumpFactor();
284
+ // 0.42F is the default jump strength, which will apply for player here
285
+ return (inBlock.owner.getJumpFactor() === 1 ? belowBlock.owner.getJumpFactor() : inBlock.owner.getJumpFactor()) * 0.42;
271
286
  }
272
287
  /*
273
288
  * Invoking flow
274
289
  *
275
290
  * |-> travelInAir ---|
276
- * travel -|-> travelInFluid -|--> move -> colision
291
+ * travel -|-> travelInFluid -+--> move -> colision
277
292
  * |-> flying? -------|
278
293
  */
279
294
  /*
@@ -286,8 +301,8 @@ class Player {
286
301
  travelInAir(input) {
287
302
  const posBelow = this.getOnPos(0.50001);
288
303
  if (!this.blocks.hasChunkAt(posBelow))
289
- return; // // console.log(`no chunk at ${Math.floor(posBelow.x / 16)} ${Math.floor(posBelow.y / 16)} ${Math.floor(posBelow.z / 16)}`);
290
- // // console.log('posBelow', posBelow, 'block', this.blocks.at(posBelow)?.owner.getType());
304
+ return; // console.log(`no chunk at ${Math.floor(posBelow.x / 16)} ${Math.floor(posBelow.y / 16)} ${Math.floor(posBelow.z / 16)}`);
305
+ // console.log('posBelow', posBelow, 'block', this.blocks.at(posBelow)?.owner.getType());
291
306
  const blockFriction = this.onGround ? this.blocks.at(posBelow).owner.getFriction() : 1;
292
307
  const movement = this.handleFrictionAndCalculateMovement(input, blockFriction);
293
308
  let movementY = movement.y;
@@ -339,7 +354,7 @@ class Player {
339
354
  getSpeed() {
340
355
  // return the base for now
341
356
  // TODO: Handle other cases: sprinting, speed-enchanted gear and potion
342
- return 0.1;
357
+ return this.isSprinting ? 0.13 : 0.1;
343
358
  }
344
359
  moveRelative(input, speed) {
345
360
  let delta = direction_1.Vec3.Zero;
@@ -377,13 +392,11 @@ class Player {
377
392
  to: checkTo,
378
393
  getBlockState: (position) => this.blocks.at(position).shape
379
394
  });
380
- if (hitResult?.miss !== false) {
395
+ if (hitResult?.miss !== false)
381
396
  this.fallDistance = 0;
382
- }
383
397
  }
384
398
  const pos = this.getPos();
385
399
  const newPosition = pos.add(movement);
386
- // addMovementThisTick(new Movement(pos, newPosition, delta2));
387
400
  this.setPos(newPosition);
388
401
  }
389
402
  this.checkFallDamage(movement.y);
@@ -441,7 +454,7 @@ class Player {
441
454
  }
442
455
  collide(movement) {
443
456
  // Get player's bounding box
444
- const { x: playerX, y: playerY, z: playerZ } = this.tcp.player.position;
457
+ const { x: playerX, y: playerY, z: playerZ } = this.state.player.position;
445
458
  const playerBB = aabb_1.AABB.fromEntityType("minecraft:player")
446
459
  .move(playerX, playerY, playerZ);
447
460
  const expandedBB = playerBB.expandTowards(movement);
@@ -452,7 +465,7 @@ class Player {
452
465
  // expandedBB: expandedBB.copyBase(),
453
466
  // });
454
467
  // Collect all colliders
455
- const colliders = this.collectColliders(expandedBB, [this.tcp.player.entityId]);
468
+ const colliders = this.collectColliders(expandedBB, [this.state.player.entityId]);
456
469
  // // console.log('nonEmptyColliders', colliders.filter(c => !c.isEmpty()).length);
457
470
  // Get the farest distance can move
458
471
  let movementStep;
@@ -470,7 +483,7 @@ class Player {
470
483
  let stepUpAABB = groundedAABB.expandTowards(movement.x, 0.6, movement.z);
471
484
  if (!onGroundAfterCollision)
472
485
  stepUpAABB = stepUpAABB.expandTowards(0, -1e-5, 0);
473
- const colliders = this.collectColliders(stepUpAABB, [this.tcp.player.entityId]);
486
+ const colliders = this.collectColliders(stepUpAABB, [this.state.player.entityId]);
474
487
  const stepHeightToSkip = movementStep.y;
475
488
  const stepUpCandidateSet = new Set();
476
489
  for (const collider of colliders) {
@@ -517,8 +530,8 @@ class Player {
517
530
  }
518
531
  }
519
532
  }
520
- // // console.log('expandedBB', expandedBB, 'colliderCount', colliders.length);
521
- // // console.log('movement.y', movement.y, 'movementStep.y', movementStep.y);
533
+ // console.log('expandedBB', expandedBB, 'colliderCount', colliders.length);
534
+ // console.log('movement.y', movement.y, 'movementStep.y', movementStep.y);
522
535
  return movementStep;
523
536
  }
524
537
  collectColliders(aabb, ignoreEntity = []) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"player.js","sourceRoot":"","sources":["../../src/physics/player.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import z from "zod";
2
+ import { BinaryDecoder } from "../packet/decoder";
3
+ import { SharedState } from "../world/state";
4
+ import { PacketObject } from "./registry";
5
+ export interface EncodeResult {
6
+ buffer: Buffer;
7
+ packet: z.infer<typeof PacketObject>;
8
+ }
9
+ export declare class VersionCodec {
10
+ private readonly state;
11
+ constructor(state: SharedState);
12
+ consumePacket: (packetId: string, data: object) => void;
13
+ handlePacket(packetId: number, decoder: BinaryDecoder): void;
14
+ encodePacket(packetId: number | string, data: Record<string, any>): EncodeResult;
15
+ private readField;
16
+ private writeField;
17
+ }
18
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/version/codec.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAmB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAa,YAAY,EAAsC,MAAM,YAAY,CAAC;AAWzF,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;CACxC;AAED,qBAAa,YAAY;IACT,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,WAAW,EAAK;IAE7C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAyC;IAEhG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,QA4B3D;IAEM,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,CAiCtF;IAED,OAAO,CAAC,SAAS;IA2FjB,OAAO,CAAC,UAAU;CAkErB"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VersionCodec = void 0;
4
+ const error_1 = require("../base/error");
5
+ const state_1 = require("../world/state");
6
+ const registry_1 = require("./registry");
7
+ const encoder_1 = require("../packet/encoder");
8
+ const TCPStateMapping = {
9
+ [state_1.ConnectionState.Disconnected]: null,
10
+ [state_1.ConnectionState.Handshake]: "handshaking",
11
+ [state_1.ConnectionState.Login]: "login",
12
+ [state_1.ConnectionState.Configure]: "configuration",
13
+ [state_1.ConnectionState.Play]: "play",
14
+ };
15
+ class VersionCodec {
16
+ state;
17
+ constructor(state) {
18
+ this.state = state;
19
+ }
20
+ consumePacket = () => { throw new error_1.NotImplemented(); };
21
+ handlePacket(packetId, decoder) {
22
+ const mappedState = TCPStateMapping[this.state.state];
23
+ if (!mappedState)
24
+ return; // console.log("no state");
25
+ const packet = registry_1.PacketRegistry.getPacket(mappedState, "clientbound", packetId);
26
+ if (!packet)
27
+ return; // console.log("no packet");
28
+ const { name, structure, skipForNow } = packet;
29
+ if (skipForNow)
30
+ return;
31
+ const resolvedObject = {};
32
+ if (Object.keys(structure).length > 0)
33
+ for (const [name, field] of Object.entries(structure))
34
+ try {
35
+ resolvedObject[name] = this.readField(packetId, resolvedObject, name, field, decoder);
36
+ }
37
+ catch (err) {
38
+ if (err instanceof error_1.NotImplemented)
39
+ return;
40
+ throw err;
41
+ }
42
+ if (this.state.clientOptions.debug?.packetLogger)
43
+ console.dir({
44
+ dir: "to client",
45
+ state: mappedState,
46
+ name,
47
+ data: resolvedObject,
48
+ });
49
+ this.consumePacket(`${TCPStateMapping[this.state.state]}:${name}`, resolvedObject);
50
+ }
51
+ encodePacket(packetId, data) {
52
+ const mappedState = TCPStateMapping[this.state.state];
53
+ if (!mappedState)
54
+ throw new error_1.UnexpectedValue("map-able state", this.state.state.toString());
55
+ const packet = registry_1.PacketRegistry.getPacket(mappedState, "serverbound", packetId);
56
+ if (!packet)
57
+ throw new error_1.UnexpectedValue("valid serverbound packet id", packetId.toString());
58
+ if (this.state.clientOptions.debug?.packetLogger)
59
+ console.dir({
60
+ dir: "to server",
61
+ state: mappedState,
62
+ id: packetId,
63
+ data,
64
+ });
65
+ const { name: packetName, structure } = packet;
66
+ let encoder = new encoder_1.BinaryEncoder();
67
+ for (const [name, field] of Object.entries(structure)) {
68
+ if (!(name in data))
69
+ throw new error_1.MissingField(name, `packet ${packetName}`);
70
+ if (typeof data[name] === "object")
71
+ if ("value" in data[name])
72
+ if ("metadata" in data[name])
73
+ encoder = this.writeField(field, encoder, data[name]["value"], data[name]["metadata"]);
74
+ else if ("length" in data[name])
75
+ encoder = this.writeField(field, encoder, data[name]["value"], { length: data[name]["length"] });
76
+ else
77
+ encoder = this.writeField(field, encoder, data[name]["value"]);
78
+ else
79
+ encoder = this.writeField(field, encoder, data[name]);
80
+ else
81
+ encoder = this.writeField(field, encoder, data[name]);
82
+ }
83
+ return { buffer: encoder.getBuffer(), packet };
84
+ }
85
+ readField(
86
+ // Current reading state
87
+ packetId, readObject,
88
+ // Current field
89
+ fieldName, field, decoder) {
90
+ switch (field.type) {
91
+ case "string": return decoder.readString();
92
+ case "boolean": return decoder.readBoolean();
93
+ case "byte": return decoder.readByte();
94
+ case "unsigned_byte": return decoder.readUByte();
95
+ case "short": return decoder.readShort();
96
+ case "unsigned_short": return decoder.readUShort();
97
+ case "int": return decoder.readInt();
98
+ case "long": return decoder.readLong();
99
+ case "float": return decoder.readFloat();
100
+ case "double": return decoder.readDouble();
101
+ case "var_int": return decoder.readVarInt();
102
+ case "var_long": return decoder.readVarLong();
103
+ case "uuid": return decoder.readUUID();
104
+ case "position": return decoder.readPosition();
105
+ case "array": {
106
+ let length;
107
+ if (!isNaN(Number(field.length)))
108
+ length = Number(field.length);
109
+ else
110
+ length = readObject[field.length];
111
+ if (length === undefined)
112
+ throw new error_1.MissingPacketField(packetId, fieldName, field.length.toString());
113
+ return decoder.readArray(length, (decoder) => this.readField(packetId, readObject, fieldName, field.subType, decoder));
114
+ }
115
+ case "prefixed_array": return decoder.readPrefixedArray((decoder) => this.readField(packetId, readObject, fieldName, field.subType, decoder));
116
+ case "teleport_flag": return decoder.readTeleportFlag();
117
+ case "prefixed_optional": return decoder.readPrefixedOptional((decoder) => this.readField(packetId, readObject, fieldName, field.subType, decoder));
118
+ case "nbt": return decoder.readNBT();
119
+ case "lpvec3": return decoder.readLpVec3();
120
+ case "fixed_point": {
121
+ const value = this.readField(packetId, readObject, fieldName, field.subType, decoder);
122
+ return decoder.readFixedPoint(value, field.fractionBits);
123
+ }
124
+ case "angle": return decoder.readAngle();
125
+ case "id_or_x": return decoder.readIdOrX((decoder) => this.readField(packetId, readObject, fieldName, field.subType, decoder));
126
+ case "id_set": return decoder.readIdSet();
127
+ case "chat_type_decoration": return decoder.readChatTypeDecoration();
128
+ case "chat_type": return decoder.readChatType();
129
+ case "enum": return this.readField(packetId, readObject, fieldName, field.subType, decoder);
130
+ case "json_text": return JSON.parse(decoder.readString());
131
+ case "object": {
132
+ const obj = {};
133
+ for (const [key, type] of Object.entries(field.fields))
134
+ obj[key] = this.readField(packetId, readObject, key, type, decoder);
135
+ return obj;
136
+ }
137
+ case "game_profile": {
138
+ return {
139
+ uuid: decoder.readUUID(),
140
+ username: decoder.readString(),
141
+ pproperties: decoder.readPrefixedArray((decoder) => ({
142
+ name: decoder.readString(),
143
+ value: decoder.readString(),
144
+ signature: decoder.readPrefixedOptional((decoder) => decoder.readString())
145
+ }))
146
+ };
147
+ }
148
+ case "heightmap": {
149
+ return {
150
+ type: decoder.readVarInt(),
151
+ data: decoder.readPrefixedArray((decoder) => decoder.readLong())
152
+ };
153
+ }
154
+ case "bitset": return decoder.readPrefixedArray((decoder) => decoder.readLong());
155
+ case "teleport_flags": return decoder.readTeleportFlag();
156
+ case "null": return null;
157
+ case "not_implemented": throw new error_1.NotImplemented();
158
+ case "switch": {
159
+ if (!(field.dependsOn in readObject))
160
+ throw new error_1.MissingPacketField(packetId, fieldName, field.dependsOn);
161
+ const dependencyValue = readObject[field.dependsOn];
162
+ for (const [value, type] of field.cases)
163
+ if (dependencyValue === value)
164
+ return this.readField(packetId, readObject, fieldName, type, decoder);
165
+ if (field.default)
166
+ return this.readField(packetId, readObject, fieldName, field.default, decoder);
167
+ return null;
168
+ }
169
+ }
170
+ }
171
+ writeField(field, encoder, value, metadata = {}) {
172
+ switch (field.type) {
173
+ case "string": return encoder.writeString(value);
174
+ case "boolean": return encoder.writeBoolean(value);
175
+ case "byte": return encoder.writeByte(value);
176
+ case "unsigned_byte": return encoder.writeUByte(value);
177
+ case "short": return encoder.writeShort(value);
178
+ case "unsigned_short": return encoder.writeUShort(value);
179
+ case "int": return encoder.writeInt(value);
180
+ case "long": return encoder.writeLong(value);
181
+ case "float": return encoder.writeFloat(value);
182
+ case "double": return encoder.writeDouble(value);
183
+ case "var_int": return encoder.writeVarInt(value);
184
+ case "var_long": return encoder.writeVarLong(value);
185
+ case "uuid": return encoder.writeRaw(value);
186
+ case "position": return encoder.writePosition(value);
187
+ // case "array": {
188
+ // const length = metadata["length"];
189
+ // // if (!length) throw new MissingField(packetId, fieldName, field.length);
190
+ // return encoder.writeArray(length, (decoder) => this.readField(packetId, readObject, fieldName, field.subType, decoder));
191
+ // }
192
+ case "prefixed_array": {
193
+ const length = metadata["length"] || field.length;
194
+ if (!length)
195
+ throw new error_1.MissingField("length", "prefixed array metadata object");
196
+ if (!Array.isArray(value))
197
+ throw new error_1.UnexpectedValue("an array for prefixed array", typeof value);
198
+ return encoder.writePrefixedArray(length, (encoder, index) => this.writeField(field.subType, encoder, value[index], metadata));
199
+ }
200
+ // case "teleport_flag": return encoder.writeTeleportFlag();
201
+ // case "prefixed_optional": return encoder.writePrefixedOptional((decoder) => this.readField(packetId, readObject, fieldName, field.subType, decoder));
202
+ // case "nbt": return encoder.writeNBT(value);
203
+ case "lpvec3": return encoder.writeLpVec3(value);
204
+ // case "fixed_point": {
205
+ // const value = this.readField(packetId, readObject, fieldName, field.subType, encoder);
206
+ // return encoder.writeFixedPoint(value, field.fractionBits);
207
+ // }
208
+ // case "angle": return encoder.writeAngle();
209
+ // case "id_or_x": return encoder.writeIdOrX((decoder) => this.readField(packetId, readObject, fieldName, field.subType, decoder));
210
+ // case "chat_type_decoration": return encoder.writeChatTypeDecoration();
211
+ // case "chat_type": return encoder.writeChatType();
212
+ case "enum": return this.writeField(field.subType, encoder, value, metadata);
213
+ case "json_text": return encoder.writeString(JSON.parse(value));
214
+ case "object": {
215
+ for (const [name, subField] of Object.entries(field.fields))
216
+ encoder = this.writeField(subField, encoder, value[name], metadata);
217
+ return encoder;
218
+ }
219
+ // case "switch": {
220
+ // const dependencyValue = readObject[field.dependsOn];
221
+ // if (!dependencyValue) throw new MissingField(packetId, fieldName, field.dependsOn);
222
+ // for (const [value, type] of field.cases)
223
+ // if (dependencyValue === value)
224
+ // return this.readField(packetId, readObject, fieldName, type, encoder);
225
+ // if (field.default)
226
+ // return this.readField(packetId, readObject, fieldName, field.default, encoder);
227
+ // break;
228
+ // }
229
+ default:
230
+ throw new error_1.UnexpectedValue("encoding type", field.type);
231
+ }
232
+ }
233
+ }
234
+ exports.VersionCodec = VersionCodec;
235
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/version/codec.ts"],"names":[],"mappings":"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"}