implement multiplayer direct connect, implement network manager, implement handshake and login packets, implement ByteBuf, implement RSA and AES encryption, bump version to 1.1.0

This commit is contained in:
LabyStudio
2022-06-17 06:34:09 +02:00
parent 22872f55d6
commit 410346427f
35 changed files with 2513 additions and 10 deletions
@@ -0,0 +1,22 @@
import Packet from "../../../Packet.js";
export default class HandshakePacket extends Packet {
constructor(version, nextState) {
super();
this.version = version;
this.nextState = nextState;
}
write(buffer) {
buffer.writeVarInt(this.version); // Protocol version
buffer.writeString("localhost"); // Server address
buffer.writeShort(25565); // Server port
buffer.writeVarInt(this.nextState); // Next state
}
read(buffer) {
}
}
@@ -0,0 +1,22 @@
import Packet from "../../../Packet.js";
import CryptManager from "../../../util/CryptManager.js";
export default class EncryptionResponsePacket extends Packet {
constructor(secretKey, publicKey, verifyToken) {
super();
this.secretKeyEncrypted = CryptManager.encryptRSA(publicKey, secretKey);
this.verifyTokenEncrypted = CryptManager.encryptRSA(publicKey, verifyToken);
}
write(buffer) {
buffer.writeByteArray(this.secretKeyEncrypted);
buffer.writeByteArray(this.verifyTokenEncrypted);
}
read(buffer) {
}
}
@@ -0,0 +1,18 @@
import Packet from "../../../Packet.js";
export default class LoginStartPacket extends Packet {
constructor(username) {
super();
this.username = username;
}
write(buffer) {
buffer.writeString(this.username);
}
read(buffer) {
this.username = buffer.readString();
}
}
@@ -0,0 +1,22 @@
import Packet from "../../../Packet.js";
export default class EncryptionRequestPacket extends Packet {
constructor() {
super();
}
write(buffer) {
}
read(buffer) {
this.serverId = buffer.readString();
this.publicKey = buffer.readByteArray();
this.verifyToken = buffer.readByteArray();
}
handle(handler) {
handler.handleEncryptionRequest(this);
}
}
@@ -0,0 +1,23 @@
import Packet from "../../../Packet.js";
import {format} from "../../../../../../../../../libraries/chat.js";
export default class LoginDisconnectPacket extends Packet {
constructor(message) {
super();
this.message = message;
}
write(buffer) {
buffer.writeString(this.message);
}
read(buffer) {
this.message = format(JSON.parse(buffer.readString()));
}
handle(handler) {
handler.handleLoginDisconnect(this);
}
}
@@ -0,0 +1,14 @@
import Packet from "../../../Packet.js";
export default class StatusQueryPacket extends Packet {
constructor() {
super();
}
write(buffer) {
}
read(buffer) {
}
}
@@ -0,0 +1,20 @@
import Packet from "../../../Packet.js";
export default class StatusResponsePacket extends Packet {
constructor() {
super();
}
write(buffer) {
}
read(buffer) {
this.object = JSON.parse(buffer.readString());
}
handle(packetHandler) {
packetHandler.handleStatusResponse(this)
}
}