首页 > 解决方案 > 连接到没有密码的离线服务器,但仍然获得数据包类型 1 [MINECRAFT]

问题描述

目前,我正在尝试为将来的项目登录(并与之交互)服务器进行 Node.JS 实现,并且由于某种原因(即使我已指定我在没有密码的情况下连接到本地主机)每次发送请求时,我收到来自套接字类型为0x01的响应- 尽管文档 ( https://wiki.vg ) 指出:

对于未经身份验证的(“破解”/离线模式)和本地主机连接(这两个条件中的任何一个都足以用于未加密的连接)没有加密。在这种情况下,Login Start 之后直接跟 Login Success。

我的代码目前看起来像这样(由于出现此问题而未完成):

    async function Offline(Settings : IClientSettingsParsed) {
    const start = Date.now();

    let User = Settings.user;
    let Server = Settings.server;

    const socket = await TCPSocket.connect(Server.host, Server.port);
    try {
        {
            const handshake = new Packet();
            handshake.writeVarInt(0x00);
            handshake.writeVarInt(Settings.version);
            handshake.writeString(Server.host, true);
            handshake.writeUShortBE(Server.port);
            handshake.writeVarInt(2);
            await socket.writePacket(handshake, true);

            const start = new Packet();
            start.writeVarInt(0x00);
            start.writeString(User.username, true);
            await socket.writePacket(start, true);
        }
        const response = await Packet.from(socket);
        const type = response.readVarInt();

        return type;
    } finally {
        await socket.dispose();
    }
}

it("Should create a new player in offline mode", () => {
    let Settings : IClientSettings = {
      username: "Bot",
      server: {
        host: "localhost",
        port: 61001,
        offline: true
      },
      version: EVersion["1.8.9"]
    }
    return Login(Settings).then((result) => {
      expect(result).toBe('a');
    });
  });

注意:它们在不同的文件中

标签: node.jstypescriptminecraftpacket

解决方案


推荐阅读