Fishing Info Overlays Mod
Fishing Info Overlays Mod
Customisable overlays that show fish in current area when holding a fishing rod (or crab pot), and during the fishing minigame.
This mod only displays information about the fish (and fishable items) available in your area, as well as a preview during the fishing minigame. It does not alter any mechanics and has been coded to be as compatible with other fish-related mods as possible. It’s very customisable, check out the screenshots.
Uses Data\\Fish + Fishing Simulation combo, for best mod compatibility. This method simulates the fishing minigame at a configurable interval (per UI Update) after getting the generic fish data. The higher the interval, the more accurate (and less glitchy looking) the information, but also higher performance cost. This should be near 100% accurate for anything (vanilla or modded) that uses the fishing minigame (getFish method).
Project story:
This little project started out as me wanting to update Teh’s Overhaul, because even the unofficial 1.5 update appears to outright prevent you from obtaining certain 1.5 items, and requires tonnes of workarounds for certain modded fish. Teh’s Overhaul is, as the name suggests, an overhaul – meaning it has its own logic for the fishing minigame. I was mainly interested in the overlay portion of it, since there’s plenty of decent alternatives on the minigame difficulty front. That mod however, is pretty massive – with data spread across many files, classes and APIs. I quickly gave up on trying to make any sense of it, decided to start from scratch and properly wrap my head around how the vanilla game does its thing.
So is this actually based on Teh’s Overhaul? Well, yes, but actually… who knows? The visual concept/initial idea maybe, but the code is purely SMAPI/Vanilla Stardew based.
Installation:
Download and Install the latest version of SMAPI. Made for 3.10+, earlier versions might not work.
[Optional] Download and install Generic Mod Config Menu (GMCM). If you want an easy way to customise the overlays on the fly, with in-depth explanations.
Download this mod from Files, and unzip the FishingInfoOverlays folder into your Mods folder.
Compatibility:
Tested with SVE, Ridgeside Village, Stardew Aquarium, Fishing Made Easy Suite. Anything that adds fish via simple mechanics should work, and mods that modify difficulty via simple ways like Content Patcher should be fine.
Location bar: By default it checks the Fish Data and simulates the location’s getFish (fishing minigame’s success method) 100 times per UI Update. Meaning that any fish obtainable through the location’s getFish should be found. It should work unless a mod completely overhauls the vanilla fishing.
Minigame: Uses Reflection to get the active BobberBar’s current fish and its position (plus some extra bits). It should work unless a mod completely overhauls the vanilla fishing, though it might still work if said mod updates BobberBar’s variables.
Singleplayer, multiplayer and split screen (local coop).
Issues:
Some items and locations had to be blacklisted from the location preview (doesn’t impact gameplay): Golden Walnuts (don’t think they’d appear on preview anyway), CalderaPainting (furniture), Railroad and IslandFarmCave (locations). Can’t really do anything, as the game uses Game1.player directly there instead of the provided ‘who’. Mod makers: If you’re adding mail/team conditions to getFish(), use the ‘who’ variable.
Some icon jumping, especially with low Extra Check Frequency, or when sorting icons by catch chance. Can’t really do much about it, if I store the data too long it will no longer be accurate, at best I could store it for an ingame hour provided you don’t move/change tools, instead of 10min, but it’s not really worth the spaghetti (and chance that a mod has more accurate conditions than whole hours).
Config (without GMCM, or manual):
If you’re using GMCM it has detailed ingame explanations of each position, otherwise run the game once to generate the config.json for this mod:
BarIconMode (0-3): Direction the icons will travel, before eventually swapping row/column. 0= Horisontal Icons, 1= Vertical Icons, 2= Vertical Icons + Text, 3= Disabled (no location bar for rods/pots, just minigame preview).
BarTopLeftLocationX (0-X): X coordinate of top left bar corner.
BarTopLeftLocationY (0-X): Y coordinate of top left bar corner.
BarScale (0.1-10): The bar already scales along with the UI, this allows you to fine-tune it.
BarMaxIcons (4-500): Maximum amount of icons displayed at the same time.
BarMaxIconsPerRow (4-500): Maximum amount of icons displayed before they change row/column.
BarBackgroundMode (0-2): Dark transparent background(s). 0= Circles behind each icon, 1= Single rectangle behind all icons, 2= Off.
BarShowBaitAndTackleInfo: true= Displays bait and tackle icons + counts in the bar (if equipped). false= off.
BarShowPercent: true= Displays percentage chance of catching a fish under its icon. Accuracy based on ExtraCheckFrequency, false= off.
BarSortMode (0-2): 0= Icons are sorted by name. 1= Icons are sorted by catch chance percentage (heavily based on ExtraCheckFrequency, will likely jump a lot), 2= Off (Trash, then IDs, then extras).
BarExtraCheckFrequency (0-200): 20-220= Generic + Simulated, runs the fishing minigame 20-220 times per UI Update (higher is more accurate, but can impact performance).
BarScanRadius (0-50): 0= Only checks if map is fishable (inaccurate). 1-50= Scans X tiles around player for water, and only shows fish info if found any.
BarLegendaryMode (0-2) Deprecated: If BarExtraCheckFrequency is above 0, this is ignored. 0= Vanilla Legendary Fish logic, 1= Vanilla + Always Show (cool if you have a mod that only makes them re-catchable), 2= Never Show (cool if you don’t want to see them, or have a mod that alters them).
BarCrabPotEnabled: true= Enables the above preview for Crab Pots. false= Off.
UncaughtFishAreDark: Applies to both the above bar and the minigame. true= Uncaught fish will appear darker (like in collections tab) and will be named “???” if text mode enabled. false= Fish will always show full colour and their names.
MinigamePreviewMode (0-3): Fishing minigame style. 0= Full, copies 6 layers for best visuals. 1= Simple, copies 1 for best performance. 2= Only appears in the above bar (also part of mode 0 and 1). 3= Off, no minigame preview.