File Details
FishingKit-Classic-1.0.11.zip
- R
- Mar 4, 2026
- 95.54 KB
- 132
- 1.15.8+1
- Classic
File Name
FishingKit-Classic-1.0.11.zip
Supported Versions
- 1.15.8
- 1.15.7
FishingKit - Classic Era Edition - Changelog
v1.0.11-classic
Improvements
Double-Click to Cast — Complete Rewrite
- Completely rewritten from the ground up using the
SetOverrideBindingSpellapproach (inspired by ZenFishing) - Removed the broken
SecureActionButtonTemplateapproach which detected double-clicks but never actually cast the spell - How it works now: Double-right-click in the 3D world to cast Fishing. Single right-click behaves normally (loot bobber, interact, camera).
SetOverrideBindingSpellbinds BUTTON2 directly to the Fishing spell on double-click detection — no SecureActionButton, no PreClick/PostClick, no attributes - Override binding cleared on every non-double-click (matching ZenFishing's
ClearClickHandlerpattern) so single clicks are never intercepted - Override binding cleared on entering combat
- Loot window check (
LootFrame:IsShown()) prevents double-click from firing while looting - Minimum 0.05s / maximum 0.4s double-click detection window
- Default changed from disabled to enabled — works out of the box
- Toggle on/off in General config tab
Combat Recovery Reworked
- Re-equip fishing gear after combat — previously the addon swapped to normal/combat gear after combat ended, which made no sense while fishing. Now it re-equips your fishing gear so you can resume fishing immediately
- Chat message updated: "Combat detected! Will re-equip fishing gear when combat ends."
- Config checkbox renamed from "Auto-swap to normal gear on combat" to "Re-equip fishing gear after combat"
Community Pool Visibility Toggle
- New config option: "Show community (unconfirmed) pool pins" in the Pools tab
- When disabled, hides all community (chartreuse) pool pins from both minimap and world map
- Routes built with
/fk routewill only include your personally discovered pools when community pools are hidden - Enabled by default — toggle off to see only your confirmed pool locations
Fixes
- Fixed C_Container API crash — Classic Era does not have the
C_Containernamespace in all clients. Added a compatibility shim in Core.lua that createsC_Containerwrapper functions around the legacy API (GetContainerNumSlots,GetContainerItemLink,GetContainerItemInfo,PickupContainerItem) so all code can use theC_Containernamespace safely - Fixed
GetContainerItemInforeturn value handling — Classic's legacyGetContainerItemInforeturns multiple values, while theC_Containerversion returns a table. The compatibility shim normalizes the return to always be a table with.iconFileID,.stackCount,.itemLink,.quality, and.isLockedfields - Fixed config panel overflow — config panel split into 6 tabbed sections to prevent checkboxes from overflowing the panel bounds. Tab labels shortened to fit
Files Modified
Core.lua(v1.0.11-classic, C_Container compatibility shim, combat recovery rework, doubleClickCast default true, new showCommunityPools setting)UI.lua(double-click casting complete rewrite using SetOverrideBindingSpell, removed SecureActionButton/PreClick/PostClick approach)Config.lua(combat checkbox label updated, community pools checkbox, doubleClickCast default true, 6-tab layout)Pools.lua(community pool filtering in minimap and world map pin rendering)Navigation.lua(community pool filtering in BuildRoute)CHANGELOG.mdfishing.md
v1.0.10-classic
Code Quality & Compliance Audit
Full codebase audit for API compliance, memory safety, documentation accuracy, and engineering best practices.
Critical Fixes
- Removed Interface 20505 from TOC — Classic Era edition does not contain TBC content (no Outland zones, fish, or pools). Removed TBC Anniversary interface version to prevent loading on the wrong client. Supported interfaces: 11508 (Classic Era), 30405 (Wrath Classic), 50503 (Cata Classic)
- Added C_Timer compatibility shim — Classic Era clients may lack the C_Timer API. Added a full polyfill (C_Timer.After and C_Timer.NewTicker) using an OnUpdate frame, preventing crashes on clients without native C_Timer support
- Fixed STV Fishing Contest detection —
IsContestActive()relied solely on C_DateAndTime which doesn't exist in Classic Era. Added Luadate()fallback so contest detection works on all supported clients
AH Panel Fixes
- Fixed AH price list overflowing panel bounds — Content frame now properly inset from AuctionFrame edges (TOPLEFT +12/-10, BOTTOMRIGHT -8/+37) matching Auctionator's wrapper pattern. Bottom clearance increased from 10px to 37px to clear the tab buttons
- Removed broken SetClipsChildren calls — This API doesn't exist in Classic WoW. ScrollFrame natively clips its viewport
- Added column headers — "Fish" and "Price Per Unit" header labels above the scroll area
- Scroll child width set dynamically — Uses OnSizeChanged callback instead of hardcoded width
- Fixed FontString memory leak — AH price list now uses FontString pooling instead of creating new FontStrings on every refresh
Nil Safety & Defensive Checks
- Equipment.lua — GetItemIDFromLink result now checked for nil before comparison in EquipItemByLink
- Core.lua — Nested C_Timer callbacks for combat gear swap now guard FK.Equipment existence
- Alerts.lua — StartWatching frame cached and reused instead of creating new unnamed frames each cycle
- Navigation.lua — C_Map.GetBestMapForUnit calls now guarded with namespace existence check, preventing crashes if C_Map is unavailable
- Slash commands —
/fk scalenow gives explicit error messages for non-numeric input and out-of-range values
Documentation Fixes
- Pool count corrected — Was 552, actual is 551 (both fishing.md and CHANGELOG.md)
- Missing slash commands documented — Added
/fk route stopand/fk route nearestalias notation - Section header emojis added — All fishing.md section headers now match TBC edition's emoji format for visual consistency
Files Modified
FishingKit-Classic.toc(version bump, Interface 20505 removed)Core.lua(v1.0.10-classic, C_Timer shim, IsContestActive fallback, AH panel rewrite, FontString pooling, nil guards, slash command validation)Equipment.lua(nil guard on GetItemIDFromLink)Alerts.lua(frame reuse guard in StartWatching)Navigation.lua(C_Map namespace guard)CHANGELOG.mdfishing.md(pool count, slash commands, emojis, version bump)
v1.0.9-classic
New Features
Pre-filled Pool Spawn Database (PoolData.lua)
- Ships with 551 known pool spawn locations across 24 Classic Azeroth zones
- All coordinates sourced from Wowhead — real spawn data, not estimates
- Map pins appear immediately on first install — no discovery needed
- Static data merges with user-discovered pools (user pools always take precedence)
- Community pools shown in chartreuse (yellow-green) to distinguish from discovered pools (cyan)
- Tooltip shows "Community Pool Data" with "Fish here to confirm this location" hint
- Once you fish at a community pool, it converts to a confirmed discovered pool (cyan)
Community vs Discovered Pool Pins
- Two-color pin system for instant visual distinction on maps
- Chartreuse (yellow-green): Community pool data from the pre-filled database (unconfirmed)
- Cyan (teal): Pools you've personally discovered or confirmed by fishing
- Tooltips show source: "Community Pool Data" or "Seen: X time(s)" with last-seen timestamp
- Applies to both minimap pins and world map pins
Navigation Chat Info
/fk route skipand waypoint chat messages now include source tag- Shows [Community] (chartreuse) or [Discovered] (green) next to pool name and coordinates
Bag Space in Footer Bar
- New center element in the footer shows "Bags: free/total" at all times
- Color-coded: green (>10 free), orange (5-10), red (<5), flashing "Bags FULL!" at 0
Catch Percentage per Fish
- Each fish in the "Fish Caught" stats tab now shows its percentage of total catches
- New "%" column header alongside Fish and Count
Top 5 Catches Ranking
- Gold-highlighted "Top 5 Catches" section at the top of the Fish Caught tab
- Numbered ranks (1-5) with quality-colored names, counts, and percentages
Rare Fish Tracker
- Dedicated "Rare Fish" section in the Fish Caught tab
- Shows all rare fish from the database with catch status and personal drop rates
- "Discovered: X/Y" summary counter
- Uncaught rare fish displayed in gray with "Not yet caught" text
- Added Old Ironjaw, Old Crafty, and Speckled Tastyfish as rare catches
Cycle Fish Time Windows
- Nightfin Snapper (18:00-06:00) and Sunscale Salmon (06:00-18:00) now tracked by server time
- Zone info panel shows "Nightfin: NOW" (green) or "Nightfin: 18:00" (gray) when in relevant zones
- Chat alert fires when a time window opens while you're in an applicable zone
- Integrates with existing seasonal fish display (Winter Squid, Summer Bass)
- Toggle alerts in Config > Alerts > "Cycle fish time window alerts"
Automatic SavedVariable Backups
- Auto-backup every 24 hours on login (10-second delay for stability)
/fk backup— Force an immediate backup/fk backup restore— Restore from last backup (confirmation dialog, requires /reload)/fk backup info— Show last backup timestamp and age- Backs up both global (account-wide) and per-character saved variables
v1.0.8-classic
New Features
Double-Click to Cast (Initial Implementation)
- Double-right-click anywhere to cast Fishing
- Initial implementation using SecureActionButtonTemplate with override binding
- 0.05-0.4 second double-click detection window
- Binding automatically cleared during combat
- Toggle on/off in General config tab
- Note: This implementation had issues — the SecureActionButton detected double-clicks but the spell cast did not reliably fire. Completely rewritten in v1.0.11-classic using SetOverrideBindingSpell
Persistent Footer Bar
- New footer bar at the bottom of the panel, always visible even when collapsed
- Left side: last fish caught (name and quantity, stays for 5 minutes)
- Right side: "2x Click to Cast" indicator when double-click casting is enabled
- Replaced previous title bar indicator and cast bar last-catch display
Improvements
Reliable Cast Bar
- Cast bar now uses UnitChannelInfo/UnitCastingInfo as authoritative source of truth
- Self-healing: if WoW API says the player is fishing but addon state is corrupted, state is automatically restored
- Eliminates cast bar desync issues during rapid double-click recasting
Accurate Cast Counting
- Casts counted when bobber hits the water (CHANNEL_START event) for reliable tracking
- Fish got away events properly counted as valid casts with gotAway stat
- User cancellations during cast animation (before bobber deployed) are not counted
- Uses castGen counter to prevent stale events from corrupting state
Debug Print Cleanup
- Converted all hardcoded debug prints to FK:Debug() (only visible with
/fk debug) - Removed user-facing debug spam from event handlers and double-click system
- User-facing prints (help text, goal listing, release list) unchanged
Fixes
- Fixed cast bar not resetting properly during rapid double-click recasting
- Fixed last fish caught display being immediately overwritten by idle text
- Fixed stale LOOT_CLOSED events resetting state for new casts (lootCastGen tracking)
- Fixed stale SPELLCAST_FAILED/INTERRUPTED events from old casts corrupting new cast state
Files Modified
Core.lua(v1.0.8-classic, double-click setting, castGen counter, channelStarted flag, CHANNEL_START cast counting, debug print cleanup)UI.lua(double-click casting system, footer bar, UnitChannelInfo self-heal in cast bar, debug print cleanup)Statistics.lua(UndoCastCount method for interrupted casts)Config.lua(double-click casting toggle in General tab)FishingKit-Classic.toc(version bump to 1.0.8-classic)CHANGELOG.mdfishing.md
v1.0.7-classic
Initial Classic Era Release
Standalone Classic Era port of FishingKit, forked from the TBC Anniversary Edition v1.0.11.
Classic Era Adaptations
- Removed all TBC/Outland content (zones, fish, pools, equipment)
- Removed navigation arrow (Classic Era restricts UnitPosition/GetPlayerFacing in open world)
- Removed Find Fish tracking system (Weather-Beaten Journal not available in Classic Era)
- Pool recording uses player map position directly (no facing offset)
- Minimap pins use normalized coordinate fallback
- Route navigation uses world map lines and manual waypoint skip only
- Interface set to 11503+ for Classic Era compatibility
- Separate SavedVariables (FishingKitClassicDB/FishingKitClassicCharDB) to avoid collisions
- All frame names prefixed with FishingKitClassic to prevent global conflicts