Exemple #1
0
        public static async Task HandleServerStats(Client client, PacketReader reader)
        {
            await reader.ReadByte();
            using (var packet = new PacketWriter(SendOpcode.Kick))
            {
                packet.WriteString("§1\0{0}\0{1}\0{2}\0{3}\0{4}", 
                    Server.Protocol, Server.Version, Server.Instance.GetMOTD(),
                    Server.Instance.PlayerCount, Server.Instance.Max);

                client.Send(packet);
            }
        }
Exemple #2
0
        public static async Task HandleHandshake(Client client, PacketReader reader)
        {
            byte protocol = await reader.ReadByte();
            string username = await reader.ReadString();
            string host = await reader.ReadString();
            uint port = await reader.ReadUInt32();

            // TODO: This has to happen as a seperate task!! not on this thread
            LoginResult res = client.Authenticate(username, host, port);
            if (res != LoginResult.LoggedIn)
            {
                using (var packet = new PacketWriter(SendOpcode.Kick))
                {
                    packet.WriteString("DERP!!! Server disconnected, reason: {0}", res.ToString());
                    client.Send(packet);
                }
            }
            else
            {
                //TODO: chunks?
            }
        }
Exemple #3
0
        private static async void SendLoginInformation(Client client)
        {
            using (var packet = new PacketWriter(SendOpcode.Login))
            {
                uint entityID = 4432; // TODO: make dynamic
                string levelType = "default";
                byte gameMode = 1;
                byte dimension = 0;
                byte difficulty = 2;
                byte maxPlayers = Server.MaxPlayers;

                packet.Write(entityID);
                packet.WriteString(levelType);
                packet.Write(gameMode);
                packet.Write(dimension);
                packet.Write(difficulty);
                // unused byte
                packet.Write((byte)0);
                packet.Write(maxPlayers);
                client.Send(packet);
            }

            WorldHandler.TestSpawn(client);
        }