1.7.11latestkkfish 1.7.11Aug 23, 2026 1.7.11
fix:Fixed SQLite JDBC driver loading conflict with other plugins (e.g., nightcore) — now loaded via DependencyManager at runtime
1.7.10kkfish 1.7.10Aug 14, 2026 1.7.10
fix:Fixed the CraftEngine compatibility bug (the previous fix was not complete)
Optimized database performance and asynchronous processing
added:Optimized the configuration structure and added the config-version setting, enabling automatic config upgrades starting from 1.7.10
1.7.9kkfish 1.7.9Aug 13, 2026 1.7.9
fix:fix craftengine compatible bug
fix the bug where fish and other non-rod items in config could be used as fishing rods
fix some 1.12-1.13 compatibility bugs
1.7.8kkfish 1.7.8Aug 7, 2026 1.7.8
add:When vanilla fishing is disabled, vanilla mode is now ignored for all players - everyone fishes in plugin mode
Added admin command /kf toggle <player|-all> plugin to force players back to plugin fishing mode
remove:Removed unused kkfish-folia / kkfish-spigot modules and legacy files
1.7.7kkfish 1.7.7Aug 5, 2026 1.7.7
update:Updated XSeries dependency to 13.8.0
Added PlaceholderAPI support, papilist:
- %kkfish_fish_caught_types% - types of fish caught
- %kkfish_fish_max_size% - largest fish size
- %kkfish_fishing_level% - fishing level (AuraSkills)
- %kkfish_fishing_attempts% - total fishing attempts
- %kkfish_fishing_fails% - failed fishing attempts
- %kkfish_fishing_successes% - successful fishing attempts
- %kkfish_fishing_success_rate% - success rate
- %kkfish_fish_caught_<fishKey>% - catches of a specific fish
- %kkfish_fish_caught_<fishKey>_maxsize% - max size of a specific fish
- %kkfish_fish_level_<levelKey>_caught% - catches of a specific level (e.g. legendary)
- %kkfish_fish_most_valuable% - most valuable fish value
- %kkfish_fish_hook_material% - current hook material
- %kkfish_fishing_time% - total fishing time (seconds)
1.7.6kkfish 1.7.6Aug 3, 2026 1.7.6
fix:Fixed some Folia compatibility issues
1.7.5kkfish 1.7.5Aug 2, 2026 1.7.4kkfish 1.7.4Jul 26, 2026 1.7.3kkfish 1.7.3Jul 9, 2026 1.7.3
Fix:Fixed some fishing charge prompts still showing Chinese after switching the plugin language to English bug
Fixed players using the default language not following the plugin language setting bug
1.7.2kkfish 1.7.2Jul 5, 2026 1.7.2
Fix:Fixed dead entity passed to cleanup when fishing session ends bug
Fixed server crash on database connection failure bug
Fixed background timer not stopping after plugin disable bug
Fixed lava and void bite delay miscalculation bug
Fixed players without permission still being able to fish bug
Fixed crash when saving hook material and database is down bug
Improve:Cached hook config queries
Pre-generated GUI item templates for hook material and fish dex menus
1.7.1kkfish 1.7.1Jun 18, 2026 Updated the xseries dependency version1.7.0kkfish 1.7.0Jun 16, 2026 1.7.0
Refactor:Introduced RootService as composition root with explicit startup/shutdown order
Introduced PlayerContext system unifying 18 scattered state maps with lifecycle state machine
Introduced EventBus domain event system decoupling MinigameManager cross-domain calls
Extracted infrastructure services: VersionService, EconomyService, SeasonsService, NmsAdapter, MaterialResolver
Split GameSession into FishSelector, FishMovementSimulator, MinigameRenderer, FishValueCalculator
Split Cmd into SellCommandHandler, GiveCommandHandler, CompeteCommandHandler, ConfigCommandHandler, AdminCommandHandler
Split Fish into ChargeProgressTracker, HookProjectile, BiteCheckScheduler, FishItemFactory, FishAnimationService, FishBroadcastService
Split GUI into GUICommons, HookMaterialGUIHandler, FishDexGUIHandler, CompetitionGUIHandler
Fix:Fixed startup NPE caused by MessageManager not initialized before Config
Fixed Compete init NPE caused by scheduler not injected before manager construction
Fixed BukkitRunnable cancel throwing "Not scheduled yet" on scheduler fallback path
Fixed all log language keys silently falling back to hardcoded defaults
Fixed hardcoded log messages across the codebase
Fixed GUI permission check log output in non-debug mode
Improve:Removed 9 empty dead code files causing cross-package name confusion
Removed ~1000 lines of dead code from GUI
Fixed XSeries rule violations in EntityBatchProcessor
Cleaned duplicate imports
1.6.1kkfish 1.6.1Jun 4, 2026 1.6.1
Fix:Fixed hook float task leaks on session end
Fixed rod charge-speed and float-area-size having no gameplay effect
Fixed lava and void minigame difficulty multipliers not applied
Fixed off-hand bait never consumed, bait detection and fish record parsing dependent on lore text
Fixed minigame fish selection ignoring water type pools
Fixed non-sell GUI empty slots accepting items via shift-click
Fixed sell GUI drag events blocked for all GUIs
Fixed Cmd add command feedback using string concatenation instead of format placeholders
Fixed i18n formatting characters hardcoded in fish lore and floating text
Fixed rod template fallback hardcoded Chinese
Fixed MySQL migration running SQLite-specific queries before dialect check
Fixed Math.random() scattered across 10 locations in game logic
Fixed Material enum direct usage violating cross-version rules
Fixed pools.yml referencing fish not defined in fish.yml
Fixed config comments incorrect or incomplete (charge-speed, escape)
Removed dead code: getRankPrefix(), ~75 lines of lore text parsing, duplicate sell deposit, unused config values
Add:Added ChargeSessionData for per-session rod attribute storage
Added cross-version NBT read helpers for bait and fish item identification
Added 7 i18n keys for fish lore formatting and rod template
Added Folia/Foila compatibility with dedicated kkfish-folia.jar build
Optimize:Optimized DB migration to use dialect-specific column detection
Optimized bait detection and fish record parsing from lore iteration to single NBT reads
1.6.0kkfish 1.6.0May 24, 2026 1.6.0
Fix:Fixed fish item lore showing raw rarity level (e.g. "epic:90") instead of configured display name (e.g. "史诗")
Fixed 100% charge being treated as overcharge (throw power became 0)
Fixed hook floating effect task never terminating, causing task leaks
Fixed hook trajectory task not tracked, unable to cancel on session end
Fixed Particle API incompatibility on 1.21+ (extra parameter type mismatch)
Fixed dangerZone array out of bounds in minigame (index 10 on size-10 array)
Fixed severe performance issue: rod name parsed every tick in minigame
Fixed duplicate session check missing in 2/3-argument startMinigame
Fixed OP privilege escalation without try-finally in GUIAction
Fixed fish selling losing items when player inventory is full
Fixed ClassCastException from database Number types in GUI stats
Fixed MySQL incompatibility: INSERT OR REPLACE and AUTOINCREMENT syntax
Fixed getConnection() returning null causing NullPointerException (19 call sites)
Fixed sellAllFish not collecting fish UUIDs for database cleanup
Fixed clearAllCache clearing all players' cache on any player quit
Fixed isVoidLocation always returning false, void fishing completely broken
Fixed cleanupAndAnnounce callable twice, causing duplicate rewards
Fixed PointsOnlyCompetition giving 1.0 points for fish not in fishList
Fixed reflection method lookup every tick (now cached as static field)
Fixed cross-world distance() call throwing IllegalArgumentException
Fixed fishLevel.split NPE when fishLevel is null
Fixed hookMaterial.toLowerCase NPE when database returns null
Fixed isHookPassableBlock using hardcoded strings instead of Set lookup
Fixed shared StringBuilder/Vector/Location instance fields causing thread safety issues
Fixed new Random() created frequently instead of reusing instance field
Fixed charge tick sound never playing due to millisecond precision mismatch
Fixed checkAndConsumeBait setting null instead of AIR for empty offhand
Fixed fishSize/maxSize division by zero when maxSize is 0
Fixed rare fish getting double bonus (10% forced + rareFishBonus)
Fixed invincibility period only increasing progress, never decreasing
Fixed minigame run() without exception protection, leaving zombie sessions
Fixed displayGameUI dead code with identical if-else branches
Fixed player offline not handled during minigame, causing exceptions
Fixed getRodNameByPlayer returning null instead of default "wood"
Fixed duplicate actualFishValue declaration in inner class
Fixed HashMap concurrency issues in GUI (6 maps changed to ConcurrentHashMap)
Fixed GUIType.valueOf() throwing uncaught IllegalArgumentException
Fixed direct Material enum usage in GUI violating XSeries rules (14 places)
Fixed itemsPerPage inconsistency between GUI methods (36 vs 28)
Fixed sellFishItem using unnecessary reflection for PDC access
Fixed sellFishItem returning 1 for item rewards without depositing Vault value
Fixed displayNameToHookNameMap not updating on config reload
Fixed e.printStackTrace() violating logging rules
Fixed onInventoryClose clearing search keywords for all GUI types
Fixed SlotMapping getBorderSlotCount wrong calculation for 27-slot GUI
Fixed RewardPreview isItemDisplaySlot range too small (27 instead of 54)
Fixed GUI_SIZE_6 = 6 not being a valid inventory size (changed to 54)
Fixed SQL injection risk from columnName concatenation (added whitelist)
Fixed logFishing/updatePlayerStats using connection field instead of getConnection()
Fixed cache returning mutable list reference allowing external pollution
Fixed cache cleanup running every write instead of every 100 writes
Fixed updatePlayerStats using two database round trips instead of one
Fixed getConfigurationSection() NPE in Config (5 places)
Fixed non-debug AuraSkills log output in production
Fixed Double.parseDouble without exception handling
Fixed isDebugMode/setDebugMode config path inconsistency
Fixed dead code in ensureFishAnimationSubConfigs
Fixed duplicated fish filtering logic in getAvailableFish/getAvailableFishFromPool
Fixed Material.FISHING_ROD direct enum usage in Config
Fixed parseMaterial returning null without warning in ItemValue
Fixed Y-axis movement not restricted during fishing
Fixed durability calculation overflow when maxSingleLoss < baseLoss
Fixed getRodCurrentDurability missing rodType null check
Fixed hook Y velocity unlimited descent in water mechanic
Fixed lava mechanic missing Y<=0 boundary check
Fixed lava/void hook messages using wrong language key (hook_in_water)
Fixed hasEquipmentEffect based on Lore text matching, exploitable by players
Fixed Compete shared mutable StringBuilder/ArrayList fields
Fixed Compete containsKey+put TOCTOU race condition
Fixed scheduleRecurring array index out of bounds on malformed config
Fixed competition notification tasks not tracked, can't be cancelled
Fixed scheduledTasks memory leak (completed tasks never removed)
Fixed CompetitionData non-atomic operations on counters
Fixed AmountCompetition/SingleValueCompetition/TotalValueCompetition not checking fishList filter
Fixed PointsOnlyCompetition value double-counting in point calculation
Fixed BarColor/BarStyle parse errors silently swallowed without warning
Fixed hardcoded Chinese string in Cmd instead of MessageManager
Fixed getFishValueFromItem querying database every call without cache
Fixed getItemValue() null check missing in Cmd
Fixed sellAllFish item rewards given multiple times for stacked items
Fixed setFishUUIDString using unnecessary reflection for PDC
Fixed Material.matchMaterial() in Cmd violating XSeries rules
Fixed addGlowEffect empty method and dead guiCache code removed
Add:Added fishList filter check to AmountCompetition, SingleValueCompetition, TotalValueCompetition
Added clearPlayerCache method to DB for single-player cache clearing
Added hook_in_lava and hook_in_void language keys
Added competition_invalid_duration language key
Added CompetitionUtils.formatDuration shared utility
Added columnName whitelist validation in DB
Added fishValueCache in Cmd for database query optimization
1.5.1kkfish 1.5.1May 23, 2026 1.5.1
Fix:Fixed fish broadcast displaying config base value instead of actual calculated value
Fixed fish broadcast value not matching item displayed value (random fluctuation seed mismatch)
Fixed hook GUI purchase doing nothing on click
Fixed hook GUI showing purchase price for players who already have permission
Fixed hook ID resolution failing after pagination
Add:Added i18n keys for hook purchase feedback
1.5.0kkfish 1.5.0May 22, 2026 1.5.0
Add:Added lava and void fishing with strategy pattern, including new config sections
lava-fishing.*,void-fishing.*,styles.*and independentpools.ymlAdded auto-complete feature for missing config defaults (broadcast, fish-animation, pools)
Fix:Fixed double event registration causing every Fishing handler to fire twice
Fixed
checkRodDurabilityalways returned true (broken rods could still start charging)Fixed fragile string comparison
Action.name().contains("RIGHT_CLICK")replaced with enum equalityFixed rod durability precision loss by storing remaining durability in PDC
Fixed
levelName.contains("")always true causing incorrect rarity display in broadcastsFixed duplicate 16-entry block blacklist extracted to shared method
Fixed EntityBatchProcessor never flushed (added 20-tick timer)
Fixed empty catch blocks (particle spawn failures now logged)
Fixed entity right-click swallowed mini-game green bar clicks — added
PlayerInteractEntityEventhandlerRemoved unused
Change:PlayerChatEventimportRemoved dead config nodes (13 entries), 6 unimplemented sound sections, 3 dead getters
Aligned 14 code defaults with config.yml (trigger-mode, seasonal.enabled, increase-speed, etc.)
1.4.0kkfish 1.4.0Mar 24, 2026 1.3.7kkfish 1.3.7Mar 17, 2026 Add:Added commands to switch between vanilla fishing and plugin fishing(It can be configured whether the original fishing is able to catch custom items or just the original ones.The prerequisite for switching is that the current world is on the whitelist)
Added automatic language file completion feature, which will use English as the template to fill in missing language keys (automatically runs language completion when the plugin starts and reloads)
1.3.6.3kkfish 1.3.6.3Mar 14, 2026 Tip: in message config add fish_caught_broadcast: "§b[Fishing] %player% caught a %size% %rarity% fish %fish%, worth %value%!\ FixFix cant sell bug
1.3.6.1kkfish 1.3.6.1Mar 4, 2026 TipIt is recommended to regenerate the following configuration files as their content has been updated:
competition_category.yml (under GUI configuration directory) reward_preview.yml (under GUI configuration directory) All language configuration files FixResolved the issue of hard-coded Chinese text that could not be localized (e.g., "Durability" and rare fish catch chat notifications)
AddAdded a global toggle for the economy system: when set to false, all KKfish-related buying and selling functions will be disabled
Added individual enable/disable switches for competitions: you can now turn off specific competitions independently (e.g., the enabled: true/false parameter in weekly_amount_competition and other competition configurations)
1.3.3kkfish 1.3.3Mar 3, 2026 Fix:Fix know bug
Add:Added nbt-api to handle NBT content
1.3.2kkfish 1.3.2Feb 6, 2026 Fixfix hook cant sel bug
fix gui placeholder cant edit bug
1.3.0kkfish 1.3.0Feb 1, 2026 FixOptimized the logic for fish value calculation
Fixed the bug where some configurations were missing in the default config
Fixed the UUID detection bug for sell
AddAdded support for more versions. Theoretical: 1.12-latest, Tested: 1.12, 1.21
1.0.9.1kkfish 1.0.9.1Nov 10, 2025 1.0.9updata - 大修复版本 原语言太广,导致制作时期需要修改很多,所以将语言改成只有zh_cn,en_us,其余语言就需要社区帮助了:( 调整了钓鱼成功后获得鱼的随机逻辑(原版为平等随机,现在为: - 为每种鱼根据稀有度分配权重 - 实现加权随机选择算法 添加了可自定义的物品简介 修改了钓鱼成功后的动画,让其更符合星露谷的样子(ps:其实是不小心删了,没备份,解包后改不明白,只好重写了) 修复了如果在y大于水面的时候钓鱼成功后的鱼动画会钓到脚下而不是头上 修复了测试时期的鱼竿强制附魔代码未删除的bug 修复了一些debug在非debug模式也会显示的bug 修复有部分gui的物品没有在语言文件导致英文情况下会有中文的bug 修复hookgui的上一页和点击刷新都始终是中文(没有对应的语言键位) 修复鱼钩简介状态,图鉴gui里的物品简介,比赛gui的比赛奖励gui的“玩家”在语言文件中没有对应语言键名的bug - 1.0.9.1 优化了鱼动画实体卡顿bug 修复有了自定义模板后所有鱼都不能出售的bug (改成根据uuid记录价格,如果卖了就清除记录) 增加了钓鱼的难度 1.0.8.1以下更新至1.0.9以上需要给fish.yml的每一条鱼尾部添加 template: 不然会只显示一个uuid1.0.7.1kkfish 1.0.7.1Oct 15, 2025 添加了各种粒子特效和音效的美化 添加了钓上鱼后的小动画 支持自定义鱼钩了(( 修复了有部分gui物品的简介或者名字会有前缀的bug 修复了没有auraskill也会加载相关功能导致count load的bug 1.0.6 Updata - 1.修复了季节获取失败的bug - 2.修复了更新获取显示的却是当前版本的bug - 3.修复了鱼钩数据库失效的bug - 4.添加了/kf add fish\rods\baits name 将当前手上的物品添加到配置(包括nbt)的功能,变相支持itemsadder等自定义材质\模型插件 1.0.5 更新: - 1.添加了竞赛模块。免费玩家最多可以享受 5 场自定义比赛,而付费用户则没有限制。 -阿拉伯数字。优化了 GUI。 - 3.免费版限制改为:20条鱼、10根鱼竿、10个鱼饵、5个比赛。 修复了已知问题。
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta