
Cobblemon Catch Rate Display
Real-time catch rate calculator for Cobblemon. Shows live percentages, ball comparisons, and status effects. 100% client-side. It works on any server.
- Загрузки
- 2.5M
- Подписчики
- 65
- Обновлён
- 23 августа 2026 г.
- Лицензия
- MIT
Опубликован 1 февраля 2026 г.
Cobblemon Catch Rate Display
Wondering whether that Ultra Ball is worth throwing? This shows the catch chance Cobblemon will use before you commit.
In battle, hold a Poké Ball to bring up the HUD. It accounts for the target’s current HP and status, the ball in your hand, turn count, and any special ball rules. Heavy Balls, Timer Balls, Net Balls, and the rest will show what is affecting their odds.
Hold G to compare balls. You’ll see how each one performs against the Pokémon you’re fighting, with the strongest options at the top. Outside battle, point at a wild Pokémon while holding a ball to check it there too.
Use K to hide the HUD. You can move it around the screen or change its colors in config/catchrate-display.json. The mod includes translations for 28 languages.
It runs entirely on your client using data Cobblemon already syncs to you, so servers do not need to install anything.
Compatibility
| Loaders | Fabric, NeoForge |
| Minecraft | 1.21.x |
| Cobblemon | 1.6.0+ |
Fabric needs Fabric API and Fabric Language Kotlin. NeoForge needs KotlinForForge.
Found something wrong? Open an issue on GitHub.
Icon art by Sunchlax.
Ченджлог
2.9.2+neoforgeРелиз1.21, 1.21.1 · 23 августа 2026 г.
Fixed
- Dusk Ball used the player's light level instead of the target Pokémon's. Cobblemon's own Dusk Ball logic samples
getMaxLocalRawBrightnessat the wild/battling Pokémon's block position, not the thrower's, so a player standing in a lit area next to a Pokémon in a dark corner (or vice versa) was seeing the wrong multiplier. Both the battle and overworld context builders now sample light level at the target Pokémon's position. - "Need darkness" no longer hides the actual light level. The Dusk Ball tooltip now always shows the current light level (e.g. "Need darkness (L12)") instead of a bare "Need darkness" when the bonus isn't active, across all languages.
2.9.2+fabricРелиз1.21, 1.21.1 · 23 августа 2026 г.
Fixed
- Dusk Ball used the player's light level instead of the target Pokémon's. Cobblemon's own Dusk Ball logic samples
getMaxLocalRawBrightnessat the wild/battling Pokémon's block position, not the thrower's, so a player standing in a lit area next to a Pokémon in a dark corner (or vice versa) was seeing the wrong multiplier. Both the battle and overworld context builders now sample light level at the target Pokémon's position. - "Need darkness" no longer hides the actual light level. The Dusk Ball tooltip now always shows the current light level (e.g. "Need darkness (L12)") instead of a bare "Need darkness" when the bonus isn't active, across all languages.
2.9.1+neoforgeРелиз1.21, 1.21.1 · 23 августа 2026 г.
Added
- Public API for third-party catch-rate compat. Other mods can now register a
CatchRateModifierProviderwithcom.catchrate.api.CatchRateModifierRegistryto add their own catch-rate boosts (e.g. a food or item effect) without needing dedicated compat work from this mod. Each active modifier gets its own row on the HUD and is folded into the displayed percentage the same way ball, status, and level bonuses already are. The HUD looks identical to before when nothing is registered.
Fixed
- Cleaned up leftover formatting artifacts (stray multiplier text duplicated from the ball line, trailing exclamation marks, leftover placeholder syntax) across the non-English translation files.
2.9.1+fabricРелиз1.21, 1.21.1 · 23 августа 2026 г.
Added
- Public API for third-party catch-rate compat. Other mods can now register a
CatchRateModifierProviderwithcom.catchrate.api.CatchRateModifierRegistryto add their own catch-rate boosts (e.g. a food or item effect) without needing dedicated compat work from this mod. Each active modifier gets its own row on the HUD and is folded into the displayed percentage the same way ball, status, and level bonuses already are. The HUD looks identical to before when nothing is registered.
Fixed
- Cleaned up leftover formatting artifacts (stray multiplier text duplicated from the ball line, trailing exclamation marks, leftover placeholder syntax) across the non-English translation files.
2.9.0+neoforgeРелиз1.21, 1.21.1 · 23 августа 2026 г.
Changed
- Catch rates now come from Cobblemon's own species registry whenever it is trustworthy. Cobblemon never sends
catchRateover the network, so a client on a dedicated server sees the default 45 for every species — but it also skips its data sync entirely for memory connections, which means singleplayer and LAN hosts keep the real datapack-loaded values. Catch Rate Display now detects this and reads the registry directly in that case, exactly like the Pokedex mods do. Custom species from any datapack or mod resolve correctly regardless of how their files are laid out.
Fixed
- Park Ball always showed 1x. It had no bonus logic at all and silently fell through to the generic "no effect" case. It now boosts 2.5x in temperate biomes (forest/plains, matching Cobblemon's own
cobblemon:is_temperatebiome tag), same as vanilla Cobblemon. - Custom/fake Pokemon in non-standard folders now resolve. The previous file lookup only checked eleven hardcoded
generationNfolders pluscustom/andaddon/inside mod JARs, so a species in any other subfolder silently fell back to a guess — while the same species shipped in a datapack worked, because datapacks were scanned recursively. Mod JARs are now scanned recursively too, so layout no longer matters. species_additionsare now read. Packs that adjust a catch rate throughdata/<namespace>/species_additions/were previously invisible, leaving the base value on screen.- Species files can no longer collide across packs. The file index was keyed by bare filename, so two packs shipping the same filename in different namespaces overwrote each other. Entries are now keyed by full
namespace:path, and a datapack correctly outranks a mod JAR for the same species. - Unrelated local worlds could no longer leak into the result. The local-file fallback (remote-server play) scanned
datapacks/under every save folder on the machine, not just the world being played, so an old test world's datapack could silently outrank the correct value. It now only reads the active world's own datapacks, and skips local saves entirely during genuine remote play. - Same-priority conflicts are now reproducible. Mod JAR and datapack directory listings weren't guaranteed to come back in a consistent order, so which of two same-rank sources won a conflict on the same species could vary between launches. Listings are now sorted before scanning.
- Classpath fallback no longer risks a render-thread stall. It could previously run inline before the background file scan finished, doing several file-stream opens on the render thread — the same class of stall the mod-JAR scan was fixed to avoid. It now only runs once the background scan has completed.
Removed
- Unresolvable catch rates no longer display a fabricated number. The fallback used to be a hardcoded
3, which is a plausible real catch rate — an unresolved species rendered as a confident ~1% that was indistinguishable from a correct answer. The HUD and comparison panel now show the rate as unknown instead, and never claim GUARANTEED from a value that was never resolved. Ball multipliers, HP and status are still shown, since those remain accurate.
Added
/catchrate infoand the debug log now report which source is answering lookups and how many species andspecies_additionsare indexed from files./catchrate export-ratesgainedis_knownandregistry_trustedcolumns for comparing resolved values against the registry.
Known limitation
- A datapack that exists only on a remote server still cannot be resolved, because the client has neither the registry values nor the files. Those species now report as unknown rather than showing a wrong number. Fixing this would require a server-side component, which this mod deliberately does not have.
2.9.0+fabricРелиз1.21, 1.21.1 · 23 августа 2026 г.
Changed
- Catch rates now come from Cobblemon's own species registry whenever it is trustworthy. Cobblemon never sends
catchRateover the network, so a client on a dedicated server sees the default 45 for every species — but it also skips its data sync entirely for memory connections, which means singleplayer and LAN hosts keep the real datapack-loaded values. Catch Rate Display now detects this and reads the registry directly in that case, exactly like the Pokedex mods do. Custom species from any datapack or mod resolve correctly regardless of how their files are laid out.
Fixed
- Park Ball always showed 1x. It had no bonus logic at all and silently fell through to the generic "no effect" case. It now boosts 2.5x in temperate biomes (forest/plains, matching Cobblemon's own
cobblemon:is_temperatebiome tag), same as vanilla Cobblemon. - Custom/fake Pokemon in non-standard folders now resolve. The previous file lookup only checked eleven hardcoded
generationNfolders pluscustom/andaddon/inside mod JARs, so a species in any other subfolder silently fell back to a guess — while the same species shipped in a datapack worked, because datapacks were scanned recursively. Mod JARs are now scanned recursively too, so layout no longer matters. species_additionsare now read. Packs that adjust a catch rate throughdata/<namespace>/species_additions/were previously invisible, leaving the base value on screen.- Species files can no longer collide across packs. The file index was keyed by bare filename, so two packs shipping the same filename in different namespaces overwrote each other. Entries are now keyed by full
namespace:path, and a datapack correctly outranks a mod JAR for the same species. - Unrelated local worlds could no longer leak into the result. The local-file fallback (remote-server play) scanned
datapacks/under every save folder on the machine, not just the world being played, so an old test world's datapack could silently outrank the correct value. It now only reads the active world's own datapacks, and skips local saves entirely during genuine remote play. - Same-priority conflicts are now reproducible. Mod JAR and datapack directory listings weren't guaranteed to come back in a consistent order, so which of two same-rank sources won a conflict on the same species could vary between launches. Listings are now sorted before scanning.
- Classpath fallback no longer risks a render-thread stall. It could previously run inline before the background file scan finished, doing several file-stream opens on the render thread — the same class of stall the mod-JAR scan was fixed to avoid. It now only runs once the background scan has completed.
Removed
- Unresolvable catch rates no longer display a fabricated number. The fallback used to be a hardcoded
3, which is a plausible real catch rate — an unresolved species rendered as a confident ~1% that was indistinguishable from a correct answer. The HUD and comparison panel now show the rate as unknown instead, and never claim GUARANTEED from a value that was never resolved. Ball multipliers, HP and status are still shown, since those remain accurate.
Added
/catchrate infoand the debug log now report which source is answering lookups and how many species andspecies_additionsare indexed from files./catchrate export-ratesgainedis_knownandregistry_trustedcolumns for comparing resolved values against the registry.
Known limitation
- A datapack that exists only on a remote server still cannot be resolved, because the client has neither the registry values nor the files. Those species now report as unknown rather than showing a wrong number. Fixing this would require a server-side component, which this mod deliberately does not have.
2.8.24+neoforgeРелиз1.21, 1.21.1 · 22 августа 2026 г.
Fixed
- Catch rates no longer get stuck after switching your active Pokemon. The 2.8.23 caching change only invalidated on target, held ball, HP, and status changes, so inputs that come from your own side of the battle never triggered a refresh. Switching party members now updates Love Ball and Level Ball rates immediately.
- Turn-dependent balls now update every turn. Timer Ball and Quick Ball rates were held in the cache across turn advances and Quick Ball bonus consumption; both are now part of the cache key.
- Form changes, aspect changes, and water state now refresh the HUD. Mega evolution, form swaps, and the player entering or leaving water previously kept a stale rate on screen.
- Cached rates now expire after 500ms as a backstop. Inputs too expensive to sample every frame (target underwater state, light level, late Pokedex sync, external catch-rate buffs) can no longer leave a stale rate on screen indefinitely.
2.8.24+fabricРелиз1.21, 1.21.1 · 22 августа 2026 г.
Fixed
- Catch rates no longer get stuck after switching your active Pokemon. The 2.8.23 caching change only invalidated on target, held ball, HP, and status changes, so inputs that come from your own side of the battle never triggered a refresh. Switching party members now updates Love Ball and Level Ball rates immediately.
- Turn-dependent balls now update every turn. Timer Ball and Quick Ball rates were held in the cache across turn advances and Quick Ball bonus consumption; both are now part of the cache key.
- Form changes, aspect changes, and water state now refresh the HUD. Mega evolution, form swaps, and the player entering or leaving water previously kept a stale rate on screen.
- Cached rates now expire after 500ms as a backstop. Inputs too expensive to sample every frame (target underwater state, light level, late Pokedex sync, external catch-rate buffs) can no longer leave a stale rate on screen indefinitely.
Комментарии
Загружаем…