@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
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AuthClient = void 0;
|
|
7
|
+
const node_http_1 = __importDefault(require("node:http"));
|
|
8
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
9
|
+
const node_net_1 = __importDefault(require("node:net"));
|
|
10
|
+
const node_child_process_1 = require("node:child_process");
|
|
11
|
+
const error_1 = require("../base/error");
|
|
12
|
+
// From assets dir
|
|
13
|
+
const ErrorHTML = `
|
|
14
|
+
<!DOCTYPE html>
|
|
15
|
+
<html>
|
|
16
|
+
<head>
|
|
17
|
+
<title>MineJS</title>
|
|
18
|
+
<style>
|
|
19
|
+
p { margin: 0; }
|
|
20
|
+
</style>
|
|
21
|
+
</head>
|
|
22
|
+
<body>
|
|
23
|
+
<div style="display: flex; height: 100vh; width: 100vw;">
|
|
24
|
+
<div style="margin: auto; display: flex; flex-direction: column; text-align: center">
|
|
25
|
+
<p style="font-size: 30px">An error is occurred while MineJS trying to get the token</p>
|
|
26
|
+
<p style="font-size: 35px; color: crimson">{error}</p>
|
|
27
|
+
<p style="font-size: 28px">{error_description}</p>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</body>
|
|
31
|
+
</html>
|
|
32
|
+
`;
|
|
33
|
+
const SuccessHTML = `
|
|
34
|
+
<!DOCTYPE html>
|
|
35
|
+
<html>
|
|
36
|
+
<head>
|
|
37
|
+
<title>MineJS</title>
|
|
38
|
+
<style>
|
|
39
|
+
p { margin: 0; }
|
|
40
|
+
</style>
|
|
41
|
+
</head>
|
|
42
|
+
<body>
|
|
43
|
+
<div style="display: flex; height: 100vh; width: 100vw;">
|
|
44
|
+
<div style="margin: auto; display: flex; flex-direction: column; text-align: center">
|
|
45
|
+
<p style="font-size: 40px; font-weight: bold; color: darkcyan;">Done!</p>
|
|
46
|
+
<p style="font-size: 30px;">You can close this tab</p>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</body>
|
|
50
|
+
</html>
|
|
51
|
+
`;
|
|
52
|
+
const InvalidHTML = `
|
|
53
|
+
<!DOCTYPE html>
|
|
54
|
+
<html>
|
|
55
|
+
<head>
|
|
56
|
+
<title>MineJS</title>
|
|
57
|
+
<style>
|
|
58
|
+
p { margin: 0; }
|
|
59
|
+
</style>
|
|
60
|
+
</head>
|
|
61
|
+
<body>
|
|
62
|
+
<div style="display: flex; height: 100vh; width: 100vw;">
|
|
63
|
+
<div style="margin: auto; display: flex; flex-direction: column; text-align: center">
|
|
64
|
+
<p style="font-size: 35px; color: crimson">Invalid request >:(</p>
|
|
65
|
+
<p style="font-size: 30px; color: crimson">{reason}</p>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</body>
|
|
69
|
+
</html>
|
|
70
|
+
`;
|
|
71
|
+
function open(url, log) {
|
|
72
|
+
// From https://stackoverflow.com/a/49013356/17106809
|
|
73
|
+
switch (process.platform) {
|
|
74
|
+
case "linux":
|
|
75
|
+
(0, node_child_process_1.exec)(`xdg-open "${url}"`);
|
|
76
|
+
break;
|
|
77
|
+
case "win32":
|
|
78
|
+
(0, node_child_process_1.exec)(`start "${url}"`);
|
|
79
|
+
break;
|
|
80
|
+
case "darwin":
|
|
81
|
+
(0, node_child_process_1.exec)(`open "${url}"`);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
log(`${process.platform} is not supported`);
|
|
85
|
+
log(`please open this url in your browser: ${url}`);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Got this from https://github.com/sindresorhus/get-port/blob/main/index.js#L47
|
|
90
|
+
const getFreePort = () => new Promise((resolve) => {
|
|
91
|
+
const server = node_net_1.default.createServer();
|
|
92
|
+
server.listen(0, () => {
|
|
93
|
+
const port = server.address().port;
|
|
94
|
+
server.close(() => resolve(port));
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
98
|
+
/**
|
|
99
|
+
* Auth client, for authenticating Microsoft account
|
|
100
|
+
*/
|
|
101
|
+
class AuthClient {
|
|
102
|
+
option;
|
|
103
|
+
codeVerifier;
|
|
104
|
+
codeChallenge;
|
|
105
|
+
// private refreshToken?: string;
|
|
106
|
+
constructor(option) {
|
|
107
|
+
this.option = option;
|
|
108
|
+
const codeVerifier = node_crypto_1.default.randomBytes(32).toString("hex");
|
|
109
|
+
const hashed = node_crypto_1.default.hash("sha256", codeVerifier, "base64url");
|
|
110
|
+
this.option.log ||= console.log;
|
|
111
|
+
this.codeVerifier = codeVerifier;
|
|
112
|
+
this.codeChallenge = hashed;
|
|
113
|
+
}
|
|
114
|
+
async auth() {
|
|
115
|
+
if (this.option.method === "loopback")
|
|
116
|
+
return this.loopback();
|
|
117
|
+
else
|
|
118
|
+
return this.deviceCode();
|
|
119
|
+
}
|
|
120
|
+
async loopback() {
|
|
121
|
+
const freePort = await getFreePort();
|
|
122
|
+
const expectState = node_crypto_1.default.randomBytes(8).toString("hex");
|
|
123
|
+
const authUrl = new URL("https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize");
|
|
124
|
+
authUrl.searchParams.append("client_id", this.option.client_id);
|
|
125
|
+
authUrl.searchParams.append("response_type", "code");
|
|
126
|
+
authUrl.searchParams.append("redirect_uri", `http://127.0.0.1:${freePort}`);
|
|
127
|
+
authUrl.searchParams.append("scope", "XboxLive.signin offline_access");
|
|
128
|
+
authUrl.searchParams.append("code_challenge", this.codeChallenge);
|
|
129
|
+
authUrl.searchParams.append("code_challenge_method", "S256");
|
|
130
|
+
authUrl.searchParams.append("state", expectState);
|
|
131
|
+
if (this.option.openBrowser === true)
|
|
132
|
+
open(authUrl.toString(), this.option.log);
|
|
133
|
+
else
|
|
134
|
+
this.option.log(`please open this url in your browser: ${authUrl.toString()}`);
|
|
135
|
+
const msAuthToken = await new Promise((resolve) => {
|
|
136
|
+
const server = node_http_1.default.createServer((req, res) => {
|
|
137
|
+
const end = (html, result = null) => {
|
|
138
|
+
res.end(html);
|
|
139
|
+
server.close();
|
|
140
|
+
return resolve(result);
|
|
141
|
+
};
|
|
142
|
+
const url = new URL(req.url || "", `http://127.0.0.1:${freePort}`);
|
|
143
|
+
const error = url.searchParams.get("error");
|
|
144
|
+
if (error) {
|
|
145
|
+
const description = url.searchParams.get("error_description");
|
|
146
|
+
end(ErrorHTML.replace("{error}", error).replace("{error_description}", description));
|
|
147
|
+
}
|
|
148
|
+
const code = url.searchParams.get("code");
|
|
149
|
+
if (!code)
|
|
150
|
+
end(InvalidHTML.replace("{reason}", "Missing <code>code</code> parameter"));
|
|
151
|
+
const state = url.searchParams.get("state");
|
|
152
|
+
if (!state)
|
|
153
|
+
end(InvalidHTML.replace("{reason}", "Missing <code>state</code> parameter"));
|
|
154
|
+
if (state !== expectState)
|
|
155
|
+
end(InvalidHTML.replace("{reason}", "Mismatch state"));
|
|
156
|
+
return end(SuccessHTML, code);
|
|
157
|
+
});
|
|
158
|
+
server.listen(freePort);
|
|
159
|
+
});
|
|
160
|
+
if (!msAuthToken)
|
|
161
|
+
throw new error_1.CantGetMsAccessToken();
|
|
162
|
+
const msTokenUrl = new URL("https://login.microsoftonline.com/consumers/oauth2/v2.0/token");
|
|
163
|
+
const msTokenBody = new URLSearchParams();
|
|
164
|
+
msTokenBody.append("client_id", this.option.client_id);
|
|
165
|
+
msTokenBody.append("code", msAuthToken);
|
|
166
|
+
msTokenBody.append("scope", "XboxLive.signin offline_access");
|
|
167
|
+
msTokenBody.append("redirect_uri", `http://127.0.0.1:${freePort}`);
|
|
168
|
+
msTokenBody.append("grant_type", "authorization_code");
|
|
169
|
+
msTokenBody.append("code_verifier", this.codeVerifier);
|
|
170
|
+
const msTokenRequest = await fetch(msTokenUrl, {
|
|
171
|
+
headers: {
|
|
172
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
173
|
+
},
|
|
174
|
+
method: "POST",
|
|
175
|
+
body: msTokenBody.toString()
|
|
176
|
+
});
|
|
177
|
+
const msTokenResponse = await msTokenRequest.json();
|
|
178
|
+
if ("error" in msTokenResponse)
|
|
179
|
+
throw new error_1.AuthError(msTokenResponse["error"]);
|
|
180
|
+
const msToken = msTokenResponse["access_token"];
|
|
181
|
+
return this.getMcToken(msToken);
|
|
182
|
+
}
|
|
183
|
+
async deviceCode() {
|
|
184
|
+
const codeUrl = new URL("https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode");
|
|
185
|
+
const codeBody = new URLSearchParams();
|
|
186
|
+
codeBody.set("client_id", this.option.client_id);
|
|
187
|
+
codeBody.append("scope", "XboxLive.signin offline_access");
|
|
188
|
+
const codeRequest = await fetch(codeUrl, {
|
|
189
|
+
headers: {
|
|
190
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
191
|
+
},
|
|
192
|
+
method: "POST",
|
|
193
|
+
body: codeBody.toString()
|
|
194
|
+
});
|
|
195
|
+
const codeResponse = await codeRequest.json();
|
|
196
|
+
const deviceCode = codeResponse["device_code"];
|
|
197
|
+
const message = codeResponse["message"];
|
|
198
|
+
let interval = Number(codeResponse["interval"]);
|
|
199
|
+
this.option.log(message);
|
|
200
|
+
let msToken;
|
|
201
|
+
const msTokenUrl = new URL("https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token");
|
|
202
|
+
const msTokenBody = new URLSearchParams();
|
|
203
|
+
msTokenBody.set("grant_type", "urn:ietf:params:oauth:grant-type:device_code");
|
|
204
|
+
msTokenBody.set("client_id", this.option.client_id);
|
|
205
|
+
msTokenBody.set("device_code", deviceCode);
|
|
206
|
+
while (true) {
|
|
207
|
+
await sleep(interval * 1000);
|
|
208
|
+
const msTokenRequest = await fetch(msTokenUrl, {
|
|
209
|
+
headers: {
|
|
210
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
211
|
+
},
|
|
212
|
+
method: "POST"
|
|
213
|
+
});
|
|
214
|
+
const msTokenResponse = await msTokenRequest.json();
|
|
215
|
+
if ("error" in msTokenResponse)
|
|
216
|
+
switch (msTokenResponse["error"]) {
|
|
217
|
+
case "authorization_pending": continue;
|
|
218
|
+
case "slow_down":
|
|
219
|
+
interval += 5;
|
|
220
|
+
continue;
|
|
221
|
+
case "auth_denied": throw new error_1.AuthDenied();
|
|
222
|
+
case "expired_token": throw new error_1.AuthTokenExpired();
|
|
223
|
+
default: throw new error_1.AuthError(msTokenResponse["error"]);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
msToken = msTokenResponse["access_token"];
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (!msToken)
|
|
231
|
+
throw new error_1.CantGetMsAccessToken();
|
|
232
|
+
return this.getMcToken(msToken);
|
|
233
|
+
}
|
|
234
|
+
async getMcToken(msToken) {
|
|
235
|
+
// Get Xbox Live token
|
|
236
|
+
const xboxRequest = await fetch("https://user.auth.xboxlive.com/user/authenticate", {
|
|
237
|
+
headers: {
|
|
238
|
+
"Content-Type": "application/json",
|
|
239
|
+
Accept: "application/json"
|
|
240
|
+
},
|
|
241
|
+
body: JSON.stringify({
|
|
242
|
+
"Properties": {
|
|
243
|
+
"AuthMethod": "RPS",
|
|
244
|
+
"SiteName": "user.auth.xboxlive.com",
|
|
245
|
+
"RpsTicket": `d=${msToken}`
|
|
246
|
+
},
|
|
247
|
+
"RelyingParty": "http://auth.xboxlive.com",
|
|
248
|
+
"TokenType": "JWT"
|
|
249
|
+
}),
|
|
250
|
+
method: "POST"
|
|
251
|
+
});
|
|
252
|
+
const xboxReponse = await xboxRequest.json();
|
|
253
|
+
const xboxToken = xboxReponse["Token"];
|
|
254
|
+
const userHash = xboxReponse["DisplayClaims"]["xui"][0]["uhs"];
|
|
255
|
+
const xboxSecurityRequest = await fetch("https://xsts.auth.xboxlive.com/xsts/authorize", {
|
|
256
|
+
headers: {
|
|
257
|
+
"Content-Type": "application/json",
|
|
258
|
+
Accept: "application/json"
|
|
259
|
+
},
|
|
260
|
+
body: JSON.stringify({
|
|
261
|
+
"Properties": {
|
|
262
|
+
"SandboxId": "RETAIL",
|
|
263
|
+
"UserTokens": [xboxToken]
|
|
264
|
+
},
|
|
265
|
+
"RelyingParty": "rp://api.minecraftservices.com/",
|
|
266
|
+
"TokenType": "JWT"
|
|
267
|
+
}),
|
|
268
|
+
method: "POST"
|
|
269
|
+
});
|
|
270
|
+
const xboxSecurityReponse = await xboxSecurityRequest.json();
|
|
271
|
+
if ("XErr" in xboxSecurityReponse)
|
|
272
|
+
throw new error_1.XboxError(xboxSecurityReponse["XErr"]);
|
|
273
|
+
const xboxSecurityToken = xboxSecurityReponse["Token"];
|
|
274
|
+
const minecraftRequest = await fetch("https://api.minecraftservices.com/authentication/login_with_xbox", {
|
|
275
|
+
headers: {
|
|
276
|
+
"Content-Type": "application/json",
|
|
277
|
+
Accept: "application/json"
|
|
278
|
+
},
|
|
279
|
+
body: JSON.stringify({
|
|
280
|
+
"identityToken": `XBL3.0 x=${userHash};${xboxSecurityToken}"`
|
|
281
|
+
}),
|
|
282
|
+
method: "POST"
|
|
283
|
+
});
|
|
284
|
+
const minecraftResponse = await minecraftRequest.json();
|
|
285
|
+
const minecraftToken = minecraftResponse["access_token"];
|
|
286
|
+
const mcProfileRequest = await fetch("https://api.minecraftservices.com/minecraft/profile", {
|
|
287
|
+
headers: {
|
|
288
|
+
"Authorization": `Bearer ${minecraftToken}`
|
|
289
|
+
},
|
|
290
|
+
method: "GET"
|
|
291
|
+
});
|
|
292
|
+
const mcProfileResponse = await mcProfileRequest.json();
|
|
293
|
+
if ("error" in mcProfileResponse) {
|
|
294
|
+
if (mcProfileResponse["error"] === "NOT_FOUND")
|
|
295
|
+
throw new error_1.ProfileNotFound();
|
|
296
|
+
else
|
|
297
|
+
throw new error_1.ProfileError(mcProfileResponse["error"], mcProfileResponse["errorMessage"]);
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
token: minecraftToken,
|
|
301
|
+
uuid: mcProfileResponse["id"],
|
|
302
|
+
name: mcProfileResponse["name"]
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
exports.AuthClient = AuthClient;
|
|
307
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/client/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { BlockState } from "../world/block";
|
|
2
|
+
import { MoveDirection } from "../physics/player";
|
|
3
|
+
import { Message, TCPClientOption } from "./tcp";
|
|
4
|
+
import { TypedEmmiter as TypedEmitter } from "../base/event";
|
|
5
|
+
import { BaseVec3 } from "../physics/direction";
|
|
6
|
+
import { TextComponent } from "../base/typing";
|
|
7
|
+
import { Entity } from "../world/state";
|
|
8
|
+
export type ClientOption = Omit<TCPClientOption, "protocolVersion"> & {
|
|
9
|
+
version: string;
|
|
10
|
+
};
|
|
11
|
+
export interface ClientEvents {
|
|
12
|
+
connect: [];
|
|
13
|
+
destroy: [];
|
|
14
|
+
ready: [];
|
|
15
|
+
disconnect: [reason: string];
|
|
16
|
+
disconnectRaw: [textComponent: TextComponent];
|
|
17
|
+
playerPosition: [position: BaseVec3];
|
|
18
|
+
loadChunk: [chunkX: number, sectionY: number, chunkZ: number];
|
|
19
|
+
unloadChunk: [chunkX: number, chunkZ: number];
|
|
20
|
+
spawnEntity: [entity: Entity];
|
|
21
|
+
updateEntity: [entityId: number];
|
|
22
|
+
removeEntity: [entityId: number];
|
|
23
|
+
message: [message: Message];
|
|
24
|
+
systemMessage: [message: string];
|
|
25
|
+
systemMessageRaw: [textComponent: TextComponent];
|
|
26
|
+
actionBar: [message: string];
|
|
27
|
+
actionBarRaw: [textComponent: TextComponent];
|
|
28
|
+
}
|
|
29
|
+
declare const Client_base: new () => TypedEmitter<ClientEvents>;
|
|
30
|
+
/**
|
|
31
|
+
* High-level client.
|
|
32
|
+
*/
|
|
33
|
+
export declare class Client<IsReady extends boolean = boolean> extends Client_base {
|
|
34
|
+
private options;
|
|
35
|
+
private static loadRegistry;
|
|
36
|
+
private tickLoop;
|
|
37
|
+
private blocks;
|
|
38
|
+
private entities;
|
|
39
|
+
private player;
|
|
40
|
+
private uuid;
|
|
41
|
+
private tcp;
|
|
42
|
+
private state;
|
|
43
|
+
constructor(options: ClientOption);
|
|
44
|
+
private emitEvent;
|
|
45
|
+
private loadRegistries;
|
|
46
|
+
/**
|
|
47
|
+
* Create a connection to the server
|
|
48
|
+
*/
|
|
49
|
+
connect(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Destroy the connection
|
|
52
|
+
*/
|
|
53
|
+
disconnect(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Press and hold a key
|
|
56
|
+
*/
|
|
57
|
+
hold(direction: MoveDirection): void;
|
|
58
|
+
/**
|
|
59
|
+
* Release a key
|
|
60
|
+
*/
|
|
61
|
+
release(direction: MoveDirection): void;
|
|
62
|
+
/**
|
|
63
|
+
* Release all key
|
|
64
|
+
*/
|
|
65
|
+
stopMoving(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Get the block state at position
|
|
68
|
+
*/
|
|
69
|
+
at(x: number, y: number, z: number): BlockState | null;
|
|
70
|
+
at(position: BaseVec3): BlockState | null;
|
|
71
|
+
}
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAU,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,OAAO,EAAa,eAAe,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAQ,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAgC,MAAM,EAAe,MAAM,gBAAgB,CAAC;AAMnF,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzF,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,EAAE,CAAC;IACZ,OAAO,EAAE,EAAE,CAAC;IAEZ,KAAK,EAAE,EAAE,CAAC;IACV,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAE9C,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAErC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAGjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5B,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjC,gBAAgB,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACjD,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;CAChD;qCAKyF,YAAY,CAAC,YAAY,CAAC;AAHpH;;GAEG;AACH,qBAAa,MAAM,CAAC,OAAO,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,WAAsD;IAarG,OAAO,CAAC,OAAO;IAZ3B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAkB;IAE7C,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAA2B;IAEvC,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,KAAK,CAAuB;IAEpC,YAAoB,OAAO,EAAE,YAAY,EAgDxC;IAED,OAAO,CAAC,SAAS;YAIH,cAAc;IAU5B;;OAEG;IACU,OAAO,kBAuBnB;IACD;;OAEG;IACI,UAAU,SAEhB;IAGD;;OAEG;IACI,IAAI,CAAC,SAAS,EAAE,aAAa,QAEnC;IACD;;OAEG;IACI,OAAO,CAAC,SAAS,EAAE,aAAa,QAEtC;IACD;;OAEG;IACI,UAAU,SAEhB;IAGD;;OAEG;IACI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACvD,EAAE,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;CAKpD"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = void 0;
|
|
4
|
+
const node_stream_1 = require("node:stream");
|
|
5
|
+
const block_1 = require("../world/block");
|
|
6
|
+
const entity_1 = require("../world/entity");
|
|
7
|
+
const player_1 = require("../physics/player");
|
|
8
|
+
const tick_1 = require("../world/tick");
|
|
9
|
+
const tcp_1 = require("./tcp");
|
|
10
|
+
const registry_1 = require("../version/registry");
|
|
11
|
+
const direction_1 = require("../physics/direction");
|
|
12
|
+
const state_1 = require("../world/state");
|
|
13
|
+
const dispatcher_1 = require("../packet/dispatcher");
|
|
14
|
+
const codec_1 = require("../version/codec");
|
|
15
|
+
const auth_1 = require("./auth");
|
|
16
|
+
const math_1 = require("../base/math");
|
|
17
|
+
/**
|
|
18
|
+
* High-level client.
|
|
19
|
+
*/
|
|
20
|
+
class Client extends node_stream_1.EventEmitter {
|
|
21
|
+
options;
|
|
22
|
+
static loadRegistry = false;
|
|
23
|
+
tickLoop;
|
|
24
|
+
blocks;
|
|
25
|
+
entities;
|
|
26
|
+
player;
|
|
27
|
+
uuid = Buffer.alloc(0);
|
|
28
|
+
tcp;
|
|
29
|
+
state;
|
|
30
|
+
constructor(options) {
|
|
31
|
+
super();
|
|
32
|
+
this.options = options;
|
|
33
|
+
// For managing shared data
|
|
34
|
+
this.state = new state_1.SharedState(options, () => this.uuid);
|
|
35
|
+
// For handling packet
|
|
36
|
+
const dispatcher = new dispatcher_1.Dispatcher(this.state, this.emit.bind(this));
|
|
37
|
+
// For reading packet
|
|
38
|
+
const versionCodec = new codec_1.VersionCodec(this.state);
|
|
39
|
+
// For throwing packet through internet
|
|
40
|
+
this.tcp = new tcp_1.TCPClient(this.state, {
|
|
41
|
+
...options,
|
|
42
|
+
protocolVersion: registry_1.ProtocolVersionMapping[options.version]
|
|
43
|
+
});
|
|
44
|
+
this.tcp.forwardPacket = versionCodec.handlePacket.bind(versionCodec);
|
|
45
|
+
this.tcp.parsePacket = versionCodec.encodePacket.bind(versionCodec);
|
|
46
|
+
this.tcp.sendInitPacket = () => {
|
|
47
|
+
dispatcher.sendHandshake();
|
|
48
|
+
dispatcher.sendLoginStart();
|
|
49
|
+
};
|
|
50
|
+
dispatcher.sendPacket = this.tcp.sendPacket.bind(this.tcp);
|
|
51
|
+
dispatcher.tcpDisconnect = this.tcp.disconnect.bind(this.tcp);
|
|
52
|
+
versionCodec.consumePacket = dispatcher.handlePacket.bind(dispatcher);
|
|
53
|
+
// For querying data
|
|
54
|
+
this.blocks = new block_1.BlockManager(this.state);
|
|
55
|
+
this.entities = new entity_1.EntitiesManager(this.state);
|
|
56
|
+
// For physics things
|
|
57
|
+
this.player = new player_1.Player(this.state, this.on, this.entities, this.blocks);
|
|
58
|
+
// For tick-tock tick-tock
|
|
59
|
+
this.tickLoop = new tick_1.TickLoop(() => {
|
|
60
|
+
this.state.drainMutation();
|
|
61
|
+
this.state.drainEvent()
|
|
62
|
+
.forEach(event => this.emitEvent(event));
|
|
63
|
+
this.state.drainPacket()
|
|
64
|
+
.forEach((packet) => this.tcp.sendPacket(packet.id, packet.data));
|
|
65
|
+
this.player.tick();
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
emitEvent(event) {
|
|
69
|
+
this.emit(event.event, ...event.args);
|
|
70
|
+
}
|
|
71
|
+
async loadRegistries() {
|
|
72
|
+
if (Client.loadRegistry)
|
|
73
|
+
return;
|
|
74
|
+
Client.loadRegistry = true;
|
|
75
|
+
await registry_1.BlockRegistry.load(this.options.version);
|
|
76
|
+
await registry_1.EntityRegistry.load(this.options.version);
|
|
77
|
+
await registry_1.PacketRegistry.load(this.options.version);
|
|
78
|
+
}
|
|
79
|
+
// Start / stop
|
|
80
|
+
/**
|
|
81
|
+
* Create a connection to the server
|
|
82
|
+
*/
|
|
83
|
+
async connect() {
|
|
84
|
+
await this.loadRegistries();
|
|
85
|
+
if (!this.uuid.length) {
|
|
86
|
+
if (this.options.auth) {
|
|
87
|
+
const authClient = new auth_1.AuthClient(this.options.auth);
|
|
88
|
+
const { uuid } = await authClient.auth();
|
|
89
|
+
this.uuid = Buffer.from(uuid);
|
|
90
|
+
}
|
|
91
|
+
else
|
|
92
|
+
this.uuid = (0, math_1.computeUUID)(this.options.playerName);
|
|
93
|
+
}
|
|
94
|
+
this.tcp.connect();
|
|
95
|
+
this.once("ready", () => {
|
|
96
|
+
this.player.pruneInitialVal();
|
|
97
|
+
this.player.setInitialVal();
|
|
98
|
+
this.tickLoop.start();
|
|
99
|
+
});
|
|
100
|
+
this.once("disconnect", () => {
|
|
101
|
+
this.tickLoop.stop();
|
|
102
|
+
this.player.pruneInitialVal();
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Destroy the connection
|
|
107
|
+
*/
|
|
108
|
+
disconnect() {
|
|
109
|
+
this.tcp.disconnect();
|
|
110
|
+
}
|
|
111
|
+
// Inputs
|
|
112
|
+
/**
|
|
113
|
+
* Press and hold a key
|
|
114
|
+
*/
|
|
115
|
+
hold(direction) {
|
|
116
|
+
this.player.input(direction);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Release a key
|
|
120
|
+
*/
|
|
121
|
+
release(direction) {
|
|
122
|
+
this.player.releaseInput(direction);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Release all key
|
|
126
|
+
*/
|
|
127
|
+
stopMoving() {
|
|
128
|
+
this.player.releaseAllInputs();
|
|
129
|
+
}
|
|
130
|
+
at(a, b, c) {
|
|
131
|
+
const vec3 = direction_1.Vec3.loadArgs(a, b, c);
|
|
132
|
+
return this.blocks.at(vec3);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.Client = Client;
|
|
136
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** @hidden */
|
|
2
|
+
export declare const SectionsPerChunk: Record<string, number>;
|
|
3
|
+
/** @hidden */
|
|
4
|
+
export declare const LevelHeightLimit: Record<string, [min: number, max: number]>;
|
|
5
|
+
/**
|
|
6
|
+
* Packed block position within a chunk column to an integer
|
|
7
|
+
*
|
|
8
|
+
* A packed position look like this:
|
|
9
|
+
* `[9 bits of Y][4 bits of Z][4 bits of X]`
|
|
10
|
+
*
|
|
11
|
+
* @param x relative within chunk column
|
|
12
|
+
* @param y world height
|
|
13
|
+
* @param z relative within chunk column
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export declare const packBlockPos: (x: number, y: number, z: number) => number;
|
|
17
|
+
/**
|
|
18
|
+
* Unpacked block position within a chunk column from an integer
|
|
19
|
+
*
|
|
20
|
+
* @returns unpacked position
|
|
21
|
+
* @hidden
|
|
22
|
+
*/
|
|
23
|
+
export declare const readPackedBlockPos: (packed: number) => {
|
|
24
|
+
x: number;
|
|
25
|
+
z: number;
|
|
26
|
+
y: number;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=static.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../src/client/static.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKnD,CAAC;AAEF,cAAc;AACd,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAKvE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,MAAO,MAAM,KAAK,MAAM,KAAK,MAAM,WAAwB,CAAC;AAGrF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,WAAY,MAAM;IAC7C,CAAC;IACD,CAAC;IACD,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readPackedBlockPos = exports.packBlockPos = exports.LevelHeightLimit = exports.SectionsPerChunk = void 0;
|
|
4
|
+
/** @hidden */
|
|
5
|
+
exports.SectionsPerChunk = {
|
|
6
|
+
"minecraft:overworld": 24,
|
|
7
|
+
"minecraft:overworld_caves": 24,
|
|
8
|
+
"minecraft:the_end": 16,
|
|
9
|
+
"minecraft:the_nether": 8,
|
|
10
|
+
};
|
|
11
|
+
/** @hidden */
|
|
12
|
+
exports.LevelHeightLimit = {
|
|
13
|
+
"minecraft:overworld": [-64, 320],
|
|
14
|
+
"minecraft:overworld_caves": [-64, 320],
|
|
15
|
+
"minecraft:the_end": [0, 256],
|
|
16
|
+
"minecraft:the_nether": [0, 0],
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Packed block position within a chunk column to an integer
|
|
20
|
+
*
|
|
21
|
+
* A packed position look like this:
|
|
22
|
+
* `[9 bits of Y][4 bits of Z][4 bits of X]`
|
|
23
|
+
*
|
|
24
|
+
* @param x relative within chunk column
|
|
25
|
+
* @param y world height
|
|
26
|
+
* @param z relative within chunk column
|
|
27
|
+
* @hidden
|
|
28
|
+
*/
|
|
29
|
+
const packBlockPos = (x, y, z) => y << 8 & z << 4 & x;
|
|
30
|
+
exports.packBlockPos = packBlockPos;
|
|
31
|
+
/**
|
|
32
|
+
* Unpacked block position within a chunk column from an integer
|
|
33
|
+
*
|
|
34
|
+
* @returns unpacked position
|
|
35
|
+
* @hidden
|
|
36
|
+
*/
|
|
37
|
+
const readPackedBlockPos = (packed) => ({
|
|
38
|
+
x: packed & 0xF,
|
|
39
|
+
z: (packed >> 4) & 0xF,
|
|
40
|
+
y: (packed >> 8) & 0x1FF,
|
|
41
|
+
});
|
|
42
|
+
exports.readPackedBlockPos = readPackedBlockPos;
|
|
43
|
+
//# sourceMappingURL=static.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/client/static.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACD,QAAA,gBAAgB,GAA2B;IACpD,qBAAqB,EAAE,EAAE;IACzB,2BAA2B,EAAE,EAAE;IAC/B,mBAAmB,EAAE,EAAE;IACvB,sBAAsB,EAAE,CAAC;CAC5B,CAAC;AAEF,cAAc;AACD,QAAA,gBAAgB,GAA+C;IACxE,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC;IACjC,2BAA2B,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC;IACvC,mBAAmB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IAC7B,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;GAUG;AACI,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAAxE,QAAA,YAAY,GAAZ,YAAY,CAA4D;AAGrF;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,EAAE,MAAM,GAAG,GAAG;IACf,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG;IACtB,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK;CAC3B,CAAC,CAAC;AAJU,QAAA,kBAAkB,GAAlB,kBAAkB,CAI5B"}
|