@vaitosoi/minejs 0.2.1 → 0.3.1
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/assets/minecraft/26.2/packets.json +4741 -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/error.d.ts +105 -0
- package/dist/base/error.d.ts.map +1 -0
- package/dist/base/error.js +194 -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/typing.d.ts +9 -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 +73 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +136 -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 +84 -0
- package/dist/client/tcp.d.ts.map +1 -0
- package/dist/client/tcp.js +173 -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 +12 -12
- package/dist/index.js.map +1 -0
- package/dist/packet/decoder.d.ts +293 -0
- package/dist/packet/decoder.d.ts.map +1 -0
- package/dist/packet/decoder.js +668 -0
- package/dist/packet/decoder.js.map +1 -0
- package/dist/packet/dispatcher.d.ts +46 -0
- package/dist/packet/dispatcher.d.ts.map +1 -0
- package/dist/packet/dispatcher.js +626 -0
- package/dist/packet/dispatcher.js.map +1 -0
- package/dist/packet/encoder.d.ts +163 -0
- package/dist/packet/encoder.d.ts.map +1 -0
- package/dist/packet/encoder.js +441 -0
- package/dist/packet/encoder.js.map +1 -0
- package/dist/packet/static.d.ts +33 -0
- package/dist/packet/static.d.ts.map +1 -0
- package/dist/packet/static.js +42 -0
- package/dist/packet/static.js.map +1 -0
- package/dist/physics/aabb.d.ts +197 -0
- package/dist/physics/aabb.d.ts.map +1 -0
- package/dist/physics/aabb.js +576 -0
- package/dist/physics/aabb.js.map +1 -0
- package/dist/physics/direction.d.ts +153 -0
- package/dist/physics/direction.d.ts.map +1 -0
- package/dist/physics/direction.js +288 -0
- package/dist/physics/direction.js.map +1 -0
- package/dist/physics/player.d.ts +110 -0
- package/dist/physics/player.d.ts.map +1 -0
- package/dist/physics/player.js +558 -0
- package/dist/physics/player.js.map +1 -0
- package/dist/version/codec.d.ts +18 -0
- package/dist/version/codec.d.ts.map +1 -0
- package/dist/version/codec.js +214 -0
- package/dist/version/codec.js.map +1 -0
- package/dist/version/registry.d.ts +236 -0
- package/dist/version/registry.d.ts.map +1 -0
- package/dist/version/registry.js +289 -0
- package/dist/version/registry.js.map +1 -0
- package/dist/world/block.d.ts +86 -0
- package/dist/world/block.d.ts.map +1 -0
- package/dist/world/block.js +232 -0
- package/dist/world/block.js.map +1 -0
- package/dist/world/entity.d.ts +43 -0
- package/dist/world/entity.d.ts.map +1 -0
- package/dist/world/entity.js +97 -0
- package/dist/world/entity.js.map +1 -0
- package/dist/world/state.d.ts +151 -0
- package/dist/world/state.d.ts.map +1 -0
- package/dist/world/state.js +108 -0
- package/dist/world/state.js.map +1 -0
- package/dist/world/tick.d.ts +19 -0
- package/dist/world/tick.d.ts.map +1 -0
- package/dist/world/tick.js +49 -0
- package/dist/world/tick.js.map +1 -0
- package/package.json +7 -2
- package/src/base/error.ts +36 -0
- package/src/base/typing.ts +9 -1
- package/src/client/client.ts +99 -42
- package/src/client/tcp.ts +49 -954
- package/src/index.ts +12 -12
- package/src/{translator → packet}/decoder.ts +3 -3
- package/src/packet/dispatcher.ts +785 -0
- package/src/{translator → packet}/encoder.ts +20 -9
- package/src/{base → physics}/aabb.ts +5 -5
- package/src/{base → physics}/player.ts +41 -25
- package/src/version/codec.ts +227 -0
- package/src/version/registry.ts +333 -0
- package/src/{base → world}/block.ts +12 -11
- package/src/{base → world}/entity.ts +5 -5
- package/src/world/state.ts +232 -0
- package/test/adapter/index.ts +14 -0
- package/test/client/index.ts +1 -1
- package/test/json/index.ts +3 -0
- package/src/base/registry.ts +0 -87
- /package/assets/minecraft/{blocks.json → 26.2/blocks.json} +0 -0
- /package/assets/minecraft/{entities.json → 26.2/entities.json} +0 -0
- /package/src/{translator → packet}/static.ts +0 -0
- /package/src/{base → physics}/direction.ts +0 -0
- /package/src/{base → world}/tick.ts +0 -0
package/src/client/client.ts
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import { EventEmitter } from "node:stream";
|
|
2
|
-
import { BlockManager, BlockState } from "../
|
|
3
|
-
import { EntitiesManager } from "../
|
|
4
|
-
import { MoveDirection, Player } from "../
|
|
5
|
-
import { TickLoop } from "../
|
|
6
|
-
import {
|
|
7
|
-
import { TypedEmmiter } from "../base/event";
|
|
8
|
-
import { BlockRegistry, EntityRegistry } from "../
|
|
9
|
-
import { BaseVec3, Vec3 } from "../
|
|
2
|
+
import { BlockManager, BlockState } from "../world/block";
|
|
3
|
+
import { EntitiesManager } from "../world/entity";
|
|
4
|
+
import { MoveDirection, Player } from "../physics/player";
|
|
5
|
+
import { TickLoop } from "../world/tick";
|
|
6
|
+
import { Message, TCPClient, TCPClientOption } from "./tcp";
|
|
7
|
+
import { TypedEmmiter as TypedEmitter } from "../base/event";
|
|
8
|
+
import { BlockRegistry, EntityRegistry, PacketRegistry, ProtocolVersionMapping } from "../version/registry";
|
|
9
|
+
import { BaseVec3, Vec3 } from "../physics/direction";
|
|
10
|
+
import { TextComponent } from "../base/typing";
|
|
11
|
+
import { EmittedEvent as EmittedEvent, Entity, SharedState } from "../world/state";
|
|
12
|
+
import { Dispatcher } from "../packet/dispatcher";
|
|
13
|
+
import { VersionCodec } from "../version/codec";
|
|
14
|
+
import { AuthClient } from "./auth";
|
|
15
|
+
import { computeUUID } from "../base/math";
|
|
16
|
+
|
|
17
|
+
export type ClientOption = Omit<TCPClientOption, "protocolVersion"> & { version: string }
|
|
10
18
|
|
|
11
19
|
export interface ClientEvents {
|
|
12
|
-
|
|
20
|
+
connect: [],
|
|
21
|
+
destroy: [],
|
|
22
|
+
|
|
23
|
+
ready: [],
|
|
13
24
|
disconnect: [reason: string],
|
|
14
25
|
disconnectRaw: [textComponent: TextComponent],
|
|
15
26
|
|
|
@@ -19,7 +30,7 @@ export interface ClientEvents {
|
|
|
19
30
|
unloadChunk: [chunkX: number, chunkZ: number],
|
|
20
31
|
|
|
21
32
|
spawnEntity: [entity: Entity],
|
|
22
|
-
updateEntity: [
|
|
33
|
+
updateEntity: [entityId: number],
|
|
23
34
|
removeEntity: [entityId: number],
|
|
24
35
|
|
|
25
36
|
// Chat
|
|
@@ -33,60 +44,106 @@ export interface ClientEvents {
|
|
|
33
44
|
/**
|
|
34
45
|
* High-level client.
|
|
35
46
|
*/
|
|
36
|
-
export class Client<
|
|
47
|
+
export class Client<IsReady extends boolean = boolean> extends (EventEmitter as new () => TypedEmitter<ClientEvents>) {
|
|
48
|
+
private static loadRegistry: boolean = false;
|
|
49
|
+
|
|
37
50
|
private tickLoop: TickLoop;
|
|
38
51
|
|
|
39
|
-
private tcp: TCPClient<IsTCPReady>;
|
|
40
52
|
private blocks: BlockManager;
|
|
41
53
|
private entities: EntitiesManager;
|
|
42
54
|
private player: Player;
|
|
55
|
+
private uuid: Buffer = Buffer.alloc(0);
|
|
56
|
+
|
|
57
|
+
private tcp: TCPClient;
|
|
58
|
+
private state: SharedState<IsReady>;
|
|
43
59
|
|
|
44
|
-
constructor(options:
|
|
60
|
+
constructor(private options: ClientOption) {
|
|
45
61
|
super();
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
this.
|
|
62
|
+
|
|
63
|
+
// For managing shared data
|
|
64
|
+
this.state = new SharedState(options, () => this.uuid);
|
|
65
|
+
// For handling packet
|
|
66
|
+
const dispatcher = new Dispatcher(this.state, this.emit.bind(this));
|
|
67
|
+
// For reading packet
|
|
68
|
+
const versionCodec = new VersionCodec(this.state);
|
|
69
|
+
// For throwing packet through internet
|
|
70
|
+
this.tcp = new TCPClient(
|
|
71
|
+
this.state,
|
|
72
|
+
{
|
|
73
|
+
...options,
|
|
74
|
+
protocolVersion: ProtocolVersionMapping[options.version]!
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
this.tcp.forwardPacket = versionCodec.handlePacket.bind(versionCodec);
|
|
79
|
+
this.tcp.parsePacket = versionCodec.encodePacket.bind(versionCodec);
|
|
80
|
+
this.tcp.sendInitPacket = () => {
|
|
81
|
+
dispatcher.sendHandshake();
|
|
82
|
+
dispatcher.sendLoginStart();
|
|
83
|
+
};
|
|
84
|
+
dispatcher.sendPacket = this.tcp.sendPacket.bind(this.tcp);
|
|
85
|
+
dispatcher.tcpDisconnect = this.tcp.disconnect.bind(this.tcp);
|
|
86
|
+
versionCodec.consumePacket = dispatcher.handlePacket.bind(dispatcher);
|
|
87
|
+
|
|
88
|
+
// For querying data
|
|
89
|
+
this.blocks = new BlockManager(this.state);
|
|
90
|
+
this.entities = new EntitiesManager(this.state);
|
|
91
|
+
// For physics things
|
|
92
|
+
this.player = new Player(
|
|
93
|
+
this.state,
|
|
94
|
+
this.on,
|
|
95
|
+
this.entities,
|
|
96
|
+
this.blocks,
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
// For tick-tock tick-tock
|
|
100
|
+
this.tickLoop = new TickLoop(() => {
|
|
101
|
+
this.state.drainMutation();
|
|
102
|
+
this.state.drainEvent()
|
|
103
|
+
.forEach(event => this.emitEvent(event));
|
|
104
|
+
this.state.drainPacket()
|
|
105
|
+
.forEach((packet) => this.tcp.sendPacket(packet.id, packet.data));
|
|
106
|
+
this.player.tick();
|
|
107
|
+
});
|
|
55
108
|
}
|
|
56
109
|
|
|
57
|
-
private
|
|
58
|
-
this.
|
|
110
|
+
private emitEvent(event: EmittedEvent) {
|
|
111
|
+
this.emit(event.event, ...event.args);
|
|
59
112
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.
|
|
65
|
-
this.
|
|
66
|
-
this.
|
|
67
|
-
this.forwardEvent("updateEntity");
|
|
68
|
-
this.forwardEvent("removeEntity");
|
|
69
|
-
this.forwardEvent("message");
|
|
70
|
-
this.forwardEvent("systemMessage");
|
|
71
|
-
this.forwardEvent("systemMessageRaw");
|
|
72
|
-
this.forwardEvent("actionBar");
|
|
73
|
-
this.forwardEvent("actionBarRaw");
|
|
113
|
+
|
|
114
|
+
private async loadRegistries() {
|
|
115
|
+
if (Client.loadRegistry) return;
|
|
116
|
+
Client.loadRegistry = true;
|
|
117
|
+
await BlockRegistry.load(this.options.version);
|
|
118
|
+
await EntityRegistry.load(this.options.version);
|
|
119
|
+
await PacketRegistry.load(this.options.version);
|
|
74
120
|
}
|
|
75
121
|
|
|
76
122
|
// Start / stop
|
|
123
|
+
|
|
77
124
|
/**
|
|
78
125
|
* Create a connection to the server
|
|
79
126
|
*/
|
|
80
|
-
public connect() {
|
|
127
|
+
public async connect() {
|
|
128
|
+
await this.loadRegistries();
|
|
129
|
+
|
|
130
|
+
if (!this.uuid.length) {
|
|
131
|
+
if (this.options.auth) {
|
|
132
|
+
const authClient = new AuthClient(this.options.auth);
|
|
133
|
+
const { uuid } = await authClient.auth();
|
|
134
|
+
this.uuid = Buffer.from(uuid);
|
|
135
|
+
} else
|
|
136
|
+
this.uuid = computeUUID(this.options.playerName);
|
|
137
|
+
}
|
|
138
|
+
|
|
81
139
|
this.tcp.connect();
|
|
82
140
|
|
|
83
|
-
this.
|
|
84
|
-
this.emit("ready", this as Client<true>);
|
|
141
|
+
this.once("ready", () => {
|
|
85
142
|
this.player.pruneInitialVal();
|
|
86
143
|
this.player.setInitialVal();
|
|
87
144
|
this.tickLoop.start();
|
|
88
145
|
});
|
|
89
|
-
this.
|
|
146
|
+
this.once("disconnect", () => {
|
|
90
147
|
this.tickLoop.stop();
|
|
91
148
|
this.player.pruneInitialVal();
|
|
92
149
|
});
|