internal static void HandleUnequip(Farmer who, GameLocation location, Ring ring)
        {
            var summoningRing = rings.FirstOrDefault(r => r.ObjectID == ring.ParentSheetIndex);

            if (summoningRing is null)
            {
                CustomCompanions.monitor.Log($"Failed to find a summoning ring match to [{ring.Name}]");
                return;
            }

            // Despawn the summoned companion(s) bound to this ring
            CustomCompanions.monitor.Log($"Despawning companions bound to the summoning ring [{ring.Name}]");
            CompanionManager.RemoveCompanions(summoningRing, location);
        }
        internal static void HandleNewLocation(Farmer who, GameLocation location, Ring ring)
        {
            var summoningRing = rings.FirstOrDefault(r => r.ObjectID == ring.ParentSheetIndex);

            if (summoningRing is null)
            {
                CustomCompanions.monitor.Log($"Failed to find a summoning ring match to [{ring.Name}]");
                return;
            }

            // Create a new Companion and add it to the player's location
            CustomCompanions.monitor.Log($"Respawning companions bound to the summoning ring [{ring.Name}]");
            CompanionManager.RespawnCompanions(summoningRing, who, location);
        }
        internal static void HandleEquip(Farmer who, GameLocation location, Ring ring)
        {
            var summoningRing = rings.FirstOrDefault(r => r.ObjectID == ring.ParentSheetIndex);

            if (summoningRing is null)
            {
                CustomCompanions.monitor.Log($"Failed to find a summoning ring match to [{ring.Name}]");
                return;
            }

            var selectedCompanionData = summoningRing.Companions.ElementAt(Game1.random.Next(summoningRing.Companions.Count));
            var companion             = CompanionManager.companionModels.FirstOrDefault(c => c.Name == selectedCompanionData.Key && c.Owner == summoningRing.Owner);

            if (companion is null)
            {
                CustomCompanions.monitor.Log($"Failed to find a companion match to [{selectedCompanionData}] for the summoning ring [{ring.Name}]");
                return;
            }

            // Create a new Companion and add it to the player's location
            CustomCompanions.monitor.Log($"Spawning [{selectedCompanionData}] x{selectedCompanionData.Value.NumberToSummon} via the summoning ring [{ring.Name}]");
            CompanionManager.SummonCompanions(companion, selectedCompanionData.Value.NumberToSummon, summoningRing, who, location);
        }