/// <summary> /// Gets the replacement bait stack, or returns null for not found. /// Also handles messaging the player. /// </summary> /// <param name="original">Original bait.</param> /// <returns>Replacement bait, or null if not found.</returns> private static SObject?GetReplacementBait(SObject original) { try { if (ModEntry.Config.AutomaticRefill && original is not null) { int?replacementIndex = null; for (int i = 0; i < Game1.player.Items.Count; i++) { if (Game1.player.Items[i] is not SObject obj || obj.bigCraftable.Value || obj.Category != SObject.baitCategory) { continue; } else if (Utility.IsNormalObjectAtParentSheetIndex(obj, original.ParentSheetIndex)) { replacementIndex = i; break; } else if (!ModEntry.Config.SameBaitOnly) { replacementIndex ??= i; } } if (replacementIndex is not null && Game1.player.Items[replacementIndex.Value] is SObject returnObj) { Game1.player.Items[replacementIndex.Value] = null; Game1.showGlobalMessage(original.ParentSheetIndex == returnObj.ParentSheetIndex ? I18n.BaitReplacedSame(original.DisplayName) : I18n.BaitReplaced(original.DisplayName, returnObj.DisplayName)); return(returnObj); } }