private void OnInitialize(EventArgs args)
        {
            string path = Path.Combine(TShock.SavePath, "AccountRecovery.json");
            Config = Config.Read(path);
            if (!File.Exists(path))
            {
                Config.Write(path);
            }

            if (TShock.DB.GetSqlType() == SqlType.Sqlite)
                TShock.DB.Query("CREATE TABLE IF NOT EXISTS Emails (ID INTEGER PRIMARY KEY AUTOINCREMENT REFERENCES Users(ID) ON UPDATE CASCADE ON DELETE CASCADE, Email TEXT)");
            else
                TShock.DB.Query("CREATE TABLE IF NOT EXISTS Emails (ID INTEGER PRIMARY KEY AUTO_INCREMENT REFERENCES Users(ID) ON UPDATE CASCADE ON DELETE CASCADE, Email TEXT)");

            /*SqlTableCreator sqlcreator = new SqlTableCreator(TShock.DB,
            TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureTableStructure(new SqlTable("Emails",
            new SqlColumn("ID", MySqlDbType.Int32) { Primary = true },
            new SqlColumn("Email", MySqlDbType.Text)
            ));*/

            #region Commands
            Action <Command> Add = c =>
            {
                TShockAPI.Commands.ChatCommands.RemoveAll(c2 => c2.Names.Select(s => s.ToLowerInvariant()).Intersect(c.Names.Select(s => s.ToLowerInvariant())).Any());
                TShockAPI.Commands.ChatCommands.Add(c);
            };

            Add(new Command(Permissions.addemail, Commands.EmailUser, "email")
            {
                AllowServer = true,
                HelpText = "Allows a user to change his email or add an email."
            });

            Add(new Command(Permissions.recoveraccount, Commands.RecoverPassword, "recover")
            {
                AllowServer = true,
                HelpText = "Allows a user to request a new password."
            });
            #endregion
        }
 public void OnReload(ReloadEventArgs args)
 {
     string path = Path.Combine(TShock.SavePath, "AccountRecovery.json");
     Config = Config.Read(path);
     if (!File.Exists(path))
     {
         Config.Write(path);
     }
     args.Player.SendSuccessMessage("[Account Recovery] Reloaded configuration file and data!");
 }