private static void After_TryPurchaseItem(bool __result, Item item, int numberToBuy)
        {
            // if purchased
            if (__result)
            {
                var obj = item as SObject;

                // add bundle
                if (obj?.Category == -425 && item.Name.Contains("Bundle"))
                {
                    ItemUtils.AddBundle(item.SpecialVariable);
                    Game1.player.craftingRecipes.Remove(obj.name); // don't use .Name, since that includes 'Recipe'
                }

                // update achievements if item was purchased
                if (Config.GiveAchievements)
                {
                    switch (item.Category)
                    {
                    // recipes cooked
                    case SObject.CookingCategory:
                        Game1.player.cookedRecipe(item.ParentSheetIndex);
                        Game1.stats.checkForCookingAchievements();
                        break;

                    // fish caught
                    case SObject.FishCategory:
                        Game1.player.caughtFish(item.ParentSheetIndex, 12);
                        break;

                    // minerals found
                    case SObject.GemCategory:
                    case SObject.mineralsCategory:
                        Game1.player.foundMineral(item.ParentSheetIndex);
                        break;

                    // artifacts found
                    case 0 when obj?.Type == "Arch":
                        Game1.player.foundArtifact(item.ParentSheetIndex, numberToBuy);
                        break;
                    }
                }
            }
        }