public void OnClientMessageReceived(object sender, MessageReceivedEventArgs e)
        {
            if (e.GetMessage().Tag == (ushort)Pkt.PKT_CLIENT_REQUESTCHARACTERCLASSDATA)
            {
                PKT_SERVER_SENDCHARACTERCLASSDATA _SendClassData = new PKT_SERVER_SENDCHARACTERCLASSDATA(Database._ClassDatabase._ClassDatabase);
                e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_SENDCHARACTERCLASSDATA, _SendClassData), SendMode.Reliable);
            }
            if (e.GetMessage().Tag == (ushort)Pkt.PKT_CLIENT_SENDCHARACTERCREATEDATA)
            {
                PKT_CLIENT_SENDCHARACTERCREATEDATA _CharacterCreateData = e.GetMessage().Deserialize <PKT_CLIENT_SENDCHARACTERCREATEDATA>();
                AccountManager.ActiveAccounts[e.Client].Class.ID          = Database._ClassDatabase.GetClassByID(_CharacterCreateData.ClassID).ID;
                AccountManager.ActiveAccounts[e.Client].Class.Name        = Database._ClassDatabase.GetClassByID(_CharacterCreateData.ClassID).Name;
                AccountManager.ActiveAccounts[e.Client].Class.Description = Database._ClassDatabase.GetClassByID(_CharacterCreateData.ClassID).Description;
                AccountManager.ActiveAccounts[e.Client].isNew             = false;
                AccountManager.ActiveAccounts[e.Client].Save();

                PKT_SERVER_ACCOUNTLOGINSUCCESS _newLoginSuccessMessage = new PKT_SERVER_ACCOUNTLOGINSUCCESS("Game");
                e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTLOGINSUCCESS, _newLoginSuccessMessage), SendMode.Reliable);
            }
        }
        public void OnClientMessageReceived(object sender, MessageReceivedEventArgs e)
        {
            using (Message message = e.GetMessage())
            {
                if (message.Tag == (ushort)Pkt.PKT_CLIENT_ACCOUNTREGISTERINFO)
                {
                    PKT_CLIENT_ACCOUNTREGISTERINFO registerInfo = message.Deserialize <PKT_CLIENT_ACCOUNTREGISTERINFO>();

                    //Check if account already exists
                    if (AccountManager.GetAccount(registerInfo.Username) != null)
                    {
                        PKT_SERVER_ACCOUNTERROR _newError = new PKT_SERVER_ACCOUNTERROR("an account with this username already exists");
                        e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTERROR, _newError), SendMode.Reliable);
                        return;
                    }

                    Account _newAccount = new Account(registerInfo.Username, registerInfo.Password, registerInfo.Email, registerInfo.Referral);
                    _newAccount.ID = AccountManager.Accounts.Count + 1;

                    AccountManager.AddAccount(_newAccount);
                    AccountManager.Save();

                    //Tell them they registered.
                    PKT_SERVER_ACCOUNTSUCCESS _newRegisterMessage = new PKT_SERVER_ACCOUNTSUCCESS("Registered, welcome to Project PBBG <color=white>" + registerInfo.Username + "</color>!");
                    e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTSUCCESS, _newRegisterMessage), SendMode.Reliable);
                }//Register
                if (message.Tag == (ushort)Pkt.PKT_CLIENT_ACCOUNTLOGININFO)
                {
                    PKT_CLIENT_ACCOUNTLOGININFO loginInfo = message.Deserialize <PKT_CLIENT_ACCOUNTLOGININFO>();

                    if (AccountManager.GetAccount(loginInfo.Username) == null) //Account doesnt exist
                    {
                        PKT_SERVER_ACCOUNTERROR _newError = new PKT_SERVER_ACCOUNTERROR("account with this username doesnt exist");
                        e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTERROR, _newError), SendMode.Reliable);
                        return;
                    }

                    if (AccountManager.GetAccount(loginInfo.Username).isBanned) //Account is banned
                    {
                        PKT_SERVER_ACCOUNTERROR _newError = new PKT_SERVER_ACCOUNTERROR("account is banned date: length: reason:");
                        e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTERROR, _newError), SendMode.Reliable);
                        return;
                    }

                    if (AccountManager.isLoggedIn(loginInfo.Username)) //Account is already logged into the game.
                    {
                        PKT_SERVER_ACCOUNTERROR _newError = new PKT_SERVER_ACCOUNTERROR("account already logged in");
                        e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTERROR, _newError), SendMode.Reliable);
                        return;
                    }

                    AccountManager.LoginAccount(e.Client, AccountManager.GetAccount(loginInfo.Username));
                    AccountManager.ActiveAccounts[e.Client].NetID = e.Client;
                    TickManager._Tick += AccountManager.ActiveAccounts[e.Client].Tick;

                    if (AccountManager.GetAccount(loginInfo.Username).isNew)
                    {
                        PKT_SERVER_ACCOUNTLOGINSUCCESS _newLoginSuccessMessage = new PKT_SERVER_ACCOUNTLOGINSUCCESS("Character Creation");
                        e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTLOGINSUCCESS, _newLoginSuccessMessage), SendMode.Reliable);
                    }
                    else
                    {
                        PKT_SERVER_ACCOUNTLOGINSUCCESS _newLoginSuccessMessage = new PKT_SERVER_ACCOUNTLOGINSUCCESS("Game");
                        e.Client.SendMessage(Message.Create((ushort)Pkt.PKT_SERVER_ACCOUNTLOGINSUCCESS, _newLoginSuccessMessage), SendMode.Reliable);
                    }
                }//Login
            }
        }