public static void Draw()
 {
     if (!ManagingGuardianHouses)
     {
         return;
     }
     try
     {
         string  MouseText                   = "";
         float   Scale                       = 0.85f;
         float   SlotSpace                   = (56 * Scale);
         int     MaxRowItems                 = (int)((Main.screenWidth - 64) / SlotSpace);
         Vector2 RowPosition                 = new Vector2(0, Main.screenHeight - SlotSpace - 8);
         bool    MouseOverHouseIcon          = false;
         List <TerraGuardian[]> GuardianRows = new List <TerraGuardian[]>();
         {
             List <TerraGuardian> Guardians = new List <TerraGuardian>();
             int Counter = 0;
             foreach (TerraGuardian tg in WorldMod.GuardianTownNPC)
             {
                 if (tg.FriendshipLevel >= tg.Base.MoveInLevel || tg.IsPlayerBuddy(Main.LocalPlayer) || tg.IsStarter)
                 {
                     Guardians.Add(tg);
                 }
                 Counter++;
                 if (Counter >= MaxRowItems)
                 {
                     GuardianRows.Add(Guardians.ToArray());
                     Guardians.Clear();
                 }
             }
             GuardianRows.Add(Guardians.ToArray());
             Guardians.Clear();
         }
         for (int r = 0; r < GuardianRows.Count; r++)
         {
             RowPosition.X = Main.screenWidth * 0.5f - GuardianRows[r].Length * SlotSpace * 0.5f;
             for (int n = 0; n < GuardianRows[r].Length; n++)
             {
                 Main.spriteBatch.Draw(Main.inventoryBack6Texture, RowPosition, null, Main.inventoryBack, 0f, Vector2.Zero, Scale, SpriteEffects.None, 0f);
                 GuardianRows[r][n].DrawHead(RowPosition + new Vector2(28, 28) * Scale);
                 if (Main.mouseX >= RowPosition.X && Main.mouseX < RowPosition.X + SlotSpace &&
                     Main.mouseY >= RowPosition.Y && Main.mouseY < RowPosition.Y + SlotSpace)
                 {
                     MainPlayer.mouseInterface = true;
                     MouseOverHouseIcon        = true;
                     if (Main.mouseLeft && Main.mouseLeftRelease)
                     {
                         IsPickingAGuardianHouse     = true;
                         PickedGuardianToGiveHousing = GuardianRows[r][n].WhoAmID;
                         Main.PlaySound(12, -1, -1, 1, 1f, 0f);
                     }
                 }
                 RowPosition.X += SlotSpace;
             }
             RowPosition.Y -= SlotSpace;
         }
         if (IsPickingAGuardianHouse)
         {
             MainPlayer.mouseInterface = true;
             if (!MainMod.ActiveGuardians.ContainsKey(PickedGuardianToGiveHousing))
             {
                 IsPickingAGuardianHouse = false;
             }
             else
             {
                 DrawBanner(MainMod.ActiveGuardians[PickedGuardianToGiveHousing], new Vector2(Main.mouseX + 16, Main.mouseY + 16), Color.White);
                 if (!MouseOverHouseIcon && Main.mouseLeft && Main.mouseLeftRelease)
                 {
                     int TileX = (int)(Main.mouseX + Main.screenPosition.X) / 16, TileY = (int)(Main.mouseY + Main.screenPosition.Y) / 16;
                     if (WorldMod.MoveGuardianToHouse(MainMod.ActiveGuardians[PickedGuardianToGiveHousing], TileX, TileY))
                     {
                         Main.NewText(MainMod.ActiveGuardians[PickedGuardianToGiveHousing].Name + " will move to this room.", Color.Yellow);
                         IsPickingAGuardianHouse = false;
                         Main.PlaySound(12, -1, -1, 1, 1f, 0f);
                     }
                 }
                 if (Main.mouseRight && Main.mouseRightRelease)
                 {
                     IsPickingAGuardianHouse = false;
                 }
             }
         }
         if (MouseText != "")
         {
             Utils.DrawBorderString(Main.spriteBatch, MouseText, new Vector2(Main.mouseX, Main.mouseY + 16), Color.White, 1f, 0.5f);
         }
     }
     catch { }
 }