Cobblemon Catch Rate DisplayСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (175)
release
[NeoForge] v2.12.3
2.12.3+neoforge20 сент. 2026 г.9 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Timer Ball, Beast Ball, Moon Ball, and Love Ball now calculate correctly on Cobblemon 1.8.1+, while staying accurate for 1.8.0 and earlier.** Cobblemon fixed all four of these in 1.8.1: Timer Ball's formula gained a missing `+1` base term, Beast Ball's non-Ultra-Beast penalty (previously a no-op due to commented-out code) now really applies at 0.1×, Moon Ball's gate now checks actual time-of-day instead of a world's total elapsed ticks (previously permanently "open" past the first in-game day), and Love Ball no longer requires a species match just to get the base 2.5× opposite-gender bonus. This mod now detects the running Cobblemon version at runtime and calculates each ball using whichever ruleset is actually loaded, so players on either side of the 1.8.1 boundary see accurate odds.
- **Completed missing/stale translations across all 25 non-English locales**, found while making the above version-gated fix: `catchrate.ball.love.need_same_species` was missing from every non-English locale, and `catchrate.ball.moon.gate_closed` had been renamed from `catchrate.ball.moon.not_night` in English only — every other language was still on the old key with an inaccurate "only works at night" translation.
release
[Fabric] v2.12.3
2.12.3+fabric20 сент. 2026 г.54,1 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Timer Ball, Beast Ball, Moon Ball, and Love Ball now calculate correctly on Cobblemon 1.8.1+, while staying accurate for 1.8.0 and earlier.** Cobblemon fixed all four of these in 1.8.1: Timer Ball's formula gained a missing `+1` base term, Beast Ball's non-Ultra-Beast penalty (previously a no-op due to commented-out code) now really applies at 0.1×, Moon Ball's gate now checks actual time-of-day instead of a world's total elapsed ticks (previously permanently "open" past the first in-game day), and Love Ball no longer requires a species match just to get the base 2.5× opposite-gender bonus. This mod now detects the running Cobblemon version at runtime and calculates each ball using whichever ruleset is actually loaded, so players on either side of the 1.8.1 boundary see accurate odds.
- **Completed missing/stale translations across all 25 non-English locales**, found while making the above version-gated fix: `catchrate.ball.love.need_same_species` was missing from every non-English locale, and `catchrate.ball.moon.gate_closed` had been renamed from `catchrate.ball.moon.not_night` in English only — every other language was still on the old key with an inaccurate "only works at night" translation.
release
[NeoForge] v2.12.2
2.12.2+neoforge18 сент. 2026 г.1,3 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Ditto (and other Transform users) now actually keeps its true catch rate after transforming.** 2.12.1 attempted this by feeding the existing "disguise" fallback earlier, but that fallback's detection (`entity.effects.mockEffect`) is set only by Cobblemon's server-side battle interpreter and is never networked to observing clients — it always read as "not disguised" on the client, so the fallback never actually engaged and the every-tick observation kept overwriting the remembered species with whatever was currently visible, including the transformed one. The fix now freezes each battle Pokémon's species the first time it's observed for that battle UUID (write-once, before any Transform can occur) and always prefers that over the live, post-transform `species` field, instead of depending on the unusable disguise signal.
release
[Fabric] v2.12.2
2.12.2+fabric18 сент. 2026 г.4,3 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Ditto (and other Transform users) now actually keeps its true catch rate after transforming.** 2.12.1 attempted this by feeding the existing "disguise" fallback earlier, but that fallback's detection (`entity.effects.mockEffect`) is set only by Cobblemon's server-side battle interpreter and is never networked to observing clients — it always read as "not disguised" on the client, so the fallback never actually engaged and the every-tick observation kept overwriting the remembered species with whatever was currently visible, including the transformed one. The fix now freezes each battle Pokémon's species the first time it's observed for that battle UUID (write-once, before any Transform can occur) and always prefers that over the live, post-transform `species` field, instead of depending on the unusable disguise signal.
release
[NeoForge] v2.12.1
2.12.1+neoforge17 сент. 2026 г.188Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Ditto (and other Transform users) now keep their true catch rate after transforming.** The HUD previously switched to showing the transformed-into Pokémon's name and catch rate as soon as Transform resolved, because the existing "remembered species" fallback (originally built for Illusion) was only ever fed from the HUD-render and capture-throw code paths — both gated on the player holding a Pokéball. If Ditto transformed before a ball was drawn, its true species was never observed and there was nothing to fall back to. The opponent's species is now observed every client tick regardless of held item, so Ditto is always captured in its true form before it can transform.
release
[Fabric] v2.12.1
2.12.1+fabric17 сент. 2026 г.600Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Ditto (and other Transform users) now keep their true catch rate after transforming.** The HUD previously switched to showing the transformed-into Pokémon's name and catch rate as soon as Transform resolved, because the existing "remembered species" fallback (originally built for Illusion) was only ever fed from the HUD-render and capture-throw code paths — both gated on the player holding a Pokéball. If Ditto transformed before a ball was drawn, its true species was never observed and there was nothing to fall back to. The opponent's species is now observed every client tick regardless of held item, so Ditto is always captured in its true form before it can transform.
release
[NeoForge] v2.12.0
2.12.0+neoforge15 сент. 2026 г.917Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- **Public API for third-party custom balls.** Other mods can now register a `CatchRateBallProvider` with `com.catchrate.api.CatchRateBallRegistry`, keyed by their ball item's own `ResourceLocation`, to teach this mod about a custom Cobblemon ball's multiplier and display reason — no compat work from us required. A registered ball automatically appears in the ball comparison panel whenever the item is installed, and its result takes priority over our own hardcoded compat (e.g. All the Mods balls) for the same ID. Mirrors the existing `CatchRateModifierRegistry` API added in 2.9.1. Previously, an unrecognized custom ball silently showed a flat, likely-wrong 1x multiplier with no indication anything was off.
release
[Fabric] v2.12.0
2.12.0+fabric15 сент. 2026 г.3,5 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- **Public API for third-party custom balls.** Other mods can now register a `CatchRateBallProvider` with `com.catchrate.api.CatchRateBallRegistry`, keyed by their ball item's own `ResourceLocation`, to teach this mod about a custom Cobblemon ball's multiplier and display reason — no compat work from us required. A registered ball automatically appears in the ball comparison panel whenever the item is installed, and its result takes priority over our own hardcoded compat (e.g. All the Mods balls) for the same ID. Mirrors the existing `CatchRateModifierRegistry` API added in 2.9.1. Previously, an unrecognized custom ball silently showed a flat, likely-wrong 1x multiplier with no indication anything was off.
release
[NeoForge] v2.11.0
2.11.0+neoforge6 сент. 2026 г.3,3 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Version detection now actually reads the running Cobblemon jar.** The Cobblemon version check was reading a Kotlin `const val`, which the compiler inlines as a literal at build time — this mod always reported whatever version it happened to be compiled against, never what's actually loaded on your game. It's now read via reflection at runtime, so ancient ball behavior (see below) correctly detects mismatched Cobblemon versions instead of assuming the build-time one.
- **Beast Ball no longer shows a fake penalty.** Non-Ultra-Beast catches showed a 0.1× multiplier; Cobblemon's own penalty modifier for this has been commented out in its source for a long time, so the real behavior is a neutral 1× with no penalty at all.
- **Love Ball now requires a species match for any bonus.** It previously gave a 2.5× boost to any opposite-gender wild Pokémon regardless of species — Cobblemon's actual formula requires species to match before any bonus applies (1× otherwise), then 8× for a matching species.
- **Nest Ball no longer shows a bonus at exactly level 30.** Cobblemon's condition is a strict "level < 30"; level 30 itself gets no bonus, not the ~1.1× the raw formula would otherwise produce.
- **Moon Ball now matches Cobblemon's actual (unintuitive) capture math.** Cobblemon's real guard checks a world's total elapsed ticks against a fixed window near world creation, not the time of day — meaning in any world older than about a day, the real capture calculation applies the moon-phase bonus during the day too. This mod now reflects that instead of gating strictly on nighttime, so displayed odds match what actually happens when you throw the ball.
release
[Fabric] v2.11.0
2.11.0+fabric6 сент. 2026 г.16,4 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Version detection now actually reads the running Cobblemon jar.** The Cobblemon version check was reading a Kotlin `const val`, which the compiler inlines as a literal at build time — this mod always reported whatever version it happened to be compiled against, never what's actually loaded on your game. It's now read via reflection at runtime, so ancient ball behavior (see below) correctly detects mismatched Cobblemon versions instead of assuming the build-time one.
- **Beast Ball no longer shows a fake penalty.** Non-Ultra-Beast catches showed a 0.1× multiplier; Cobblemon's own penalty modifier for this has been commented out in its source for a long time, so the real behavior is a neutral 1× with no penalty at all.
- **Love Ball now requires a species match for any bonus.** It previously gave a 2.5× boost to any opposite-gender wild Pokémon regardless of species — Cobblemon's actual formula requires species to match before any bonus applies (1× otherwise), then 8× for a matching species.
- **Nest Ball no longer shows a bonus at exactly level 30.** Cobblemon's condition is a strict "level < 30"; level 30 itself gets no bonus, not the ~1.1× the raw formula would otherwise produce.
- **Moon Ball now matches Cobblemon's actual (unintuitive) capture math.** Cobblemon's real guard checks a world's total elapsed ticks against a fixed window near world creation, not the time of day — meaning in any world older than about a day, the real capture calculation applies the moon-phase bonus during the day too. This mod now reflects that instead of gating strictly on nighttime, so displayed odds match what actually happens when you throw the ball.
release
[NeoForge] v2.10.0
2.10.0+neoforge6 сент. 2026 г.50Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Compatibility with Cobblemon 1.8.0.** Cobblemon 1.8.0 renamed the Pokédex knowledge states (`CAUGHT`→`OWNED`, `NONE`→`UNREGISTERED`). Catch rate and HUD visibility checks now compare by enum name instead of the constant itself, so this build works unmodified on both pre-1.8.0 and 1.8.0+ Cobblemon.
release
[Fabric] v2.10.0
2.10.0+fabric6 сент. 2026 г.122Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Compatibility with Cobblemon 1.8.0.** Cobblemon 1.8.0 renamed the Pokédex knowledge states (`CAUGHT`→`OWNED`, `NONE`→`UNREGISTERED`). Catch rate and HUD visibility checks now compare by enum name instead of the constant itself, so this build works unmodified on both pre-1.8.0 and 1.8.0+ Cobblemon.
release
[NeoForge] v2.9.2
2.9.2+neoforge23 авг. 2026 г.3,3 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Dusk Ball used the player's light level instead of the target Pokémon's.** Cobblemon's own Dusk Ball logic samples `getMaxLocalRawBrightness` at 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.
release
[Fabric] v2.9.2
2.9.2+fabric23 авг. 2026 г.16,9 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Dusk Ball used the player's light level instead of the target Pokémon's.** Cobblemon's own Dusk Ball logic samples `getMaxLocalRawBrightness` at 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.
release
[NeoForge] v2.9.1
2.9.1+neoforge23 авг. 2026 г.34Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- **Public API for third-party catch-rate compat.** Other mods can now register a `CatchRateModifierProvider` with `com.catchrate.api.CatchRateModifierRegistry` to 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.
release
[Fabric] v2.9.1
2.9.1+fabric23 авг. 2026 г.132Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- **Public API for third-party catch-rate compat.** Other mods can now register a `CatchRateModifierProvider` with `com.catchrate.api.CatchRateModifierRegistry` to 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.
release
[NeoForge] v2.9.0
2.9.0+neoforge23 авг. 2026 г.15Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- **Catch rates now come from Cobblemon's own species registry whenever it is trustworthy.** Cobblemon never sends `catchRate` over 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_temperate` biome tag), same as vanilla Cobblemon.
- **Custom/fake Pokemon in non-standard folders now resolve.** The previous file lookup only checked eleven hardcoded `generationN` folders plus `custom/` and `addon/` 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_additions` are now read.** Packs that adjust a catch rate through `data/<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 info` and the debug log now report which source is answering lookups and how many species and `species_additions` are indexed from files.
- `/catchrate export-rates` gained `is_known` and `registry_trusted` columns 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.
release
[Fabric] v2.9.0
2.9.0+fabric23 авг. 2026 г.55Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- **Catch rates now come from Cobblemon's own species registry whenever it is trustworthy.** Cobblemon never sends `catchRate` over 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_temperate` biome tag), same as vanilla Cobblemon.
- **Custom/fake Pokemon in non-standard folders now resolve.** The previous file lookup only checked eleven hardcoded `generationN` folders plus `custom/` and `addon/` 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_additions` are now read.** Packs that adjust a catch rate through `data/<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 info` and the debug log now report which source is answering lookups and how many species and `species_additions` are indexed from files.
- `/catchrate export-rates` gained `is_known` and `registry_trusted` columns 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.
release
[NeoForge] v2.8.24
2.8.24+neoforge22 авг. 2026 г.493Minecraft: 1.21, 1.21.1neoforge
Что нового
### 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.
release
[Fabric] v2.8.24
2.8.24+fabric22 авг. 2026 г.1,3 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### 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.
release
[NeoForge] v2.8.23
2.8.23+neoforge26 июл. 2026 г.4,7 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- **Reduced redundant HUD recalculation.** In-battle single-ball catch calculations now stay cached until the target, held ball, HP, or status actually changes instead of being refreshed on a fixed timer.
- **Reduced redundant comparison-panel recalculation.** Battle and wild comparison panels now rebuild only when relevant catch-state inputs change, which cuts repeated per-ball multiplier and percentage work while the panel is held open.
- **Cached localized ball display names.** Ball-name translation results are now memoized instead of being rebuilt every comparison refresh.
release
[Fabric] v2.8.23
2.8.23+fabric26 июл. 2026 г.30,8 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- **Reduced redundant HUD recalculation.** In-battle single-ball catch calculations now stay cached until the target, held ball, HP, or status actually changes instead of being refreshed on a fixed timer.
- **Reduced redundant comparison-panel recalculation.** Battle and wild comparison panels now rebuild only when relevant catch-state inputs change, which cuts repeated per-ball multiplier and percentage work while the panel is held open.
- **Cached localized ball display names.** Ball-name translation results are now memoized instead of being rebuilt every comparison refresh.
release
[NeoForge] v2.8.22
2.8.22+neoforge6 мая 2026 г.15 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Form-specific catch rates now override the base species rate in the HUD and ball comparison panel.** Catch Rate Display now resolves the active form from visible aspects and applies local JSON `forms[].catchRate` overrides instead of always using the top-level species catch rate, which fixes false guarantees like Meteor-form Minior being shown as 255 catch rate instead of its real 30.
release
[Fabric] v2.8.22
2.8.22+fabric6 мая 2026 г.1,5 млнMinecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Form-specific catch rates now override the base species rate in the HUD and ball comparison panel.** Catch Rate Display now resolves the active form from visible aspects and applies local JSON `forms[].catchRate` overrides instead of always using the top-level species catch rate, which fixes false guarantees like Meteor-form Minior being shown as 255 catch rate instead of its real 30.
release
[NeoForge] v2.8.21
2.8.21+neoforge25 апр. 2026 г.1,5 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Dive Ball battle catch rates now follow Cobblemon's actual target-entity check.** Decompiling Cobblemon 1.7.3 confirmed Dive Ball uses the wild Pokemon entity's `isUnderWater()` state, not the thrower's/player's water state, so in-battle HUD and comparison rates now resolve the active wild battle entity before applying the 3.5x bonus.
release
[Fabric] v2.8.21
2.8.21+fabric25 апр. 2026 г.14,5 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Dive Ball battle catch rates now follow Cobblemon's actual target-entity check.** Decompiling Cobblemon 1.7.3 confirmed Dive Ball uses the wild Pokemon entity's `isUnderWater()` state, not the thrower's/player's water state, so in-battle HUD and comparison rates now resolve the active wild battle entity before applying the 3.5x bonus.
release
[NeoForge] v2.8.20
2.8.20+neoforge23 апр. 2026 г.357Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Soul Lava Ball reason text no longer claims a capture effect.** The ATM Soul Lava balls still use their real Fire/Water conditional multipliers, but the HUD and comparison panel no longer show the generic `Special effect on capture` label for them.
- **Unobtainium ball wording stays aligned with other real capture-effect balls.** The ATM Unobtainium balls keep the same generic capture-effect wording path used by Heal Ball, since upstream actually gives them Cobblemon's `FULL_RESTORE` capture effect.
release
[Fabric] v2.8.20
2.8.20+fabric23 апр. 2026 г.1,5 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Soul Lava Ball reason text no longer claims a capture effect.** The ATM Soul Lava balls still use their real Fire/Water conditional multipliers, but the HUD and comparison panel no longer show the generic `Special effect on capture` label for them.
- **Unobtainium ball wording stays aligned with other real capture-effect balls.** The ATM Unobtainium balls keep the same generic capture-effect wording path used by Heal Ball, since upstream actually gives them Cobblemon's `FULL_RESTORE` capture effect.
release
[NeoForge] v2.8.19
2.8.19+neoforge23 апр. 2026 г.29Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- **Added optional AllTheMons custom ball compatibility.** Catch Rate Display now recognizes supported AllTheMons balls by item ID without adding a hard dependency, applies their custom multipliers in the shared ball calculator, and only adds them to the comparison panel when those item IDs actually exist in the loaded item registry.
release
[Fabric] v2.8.19
2.8.19+fabric23 апр. 2026 г.88Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- **Added optional AllTheMons custom ball compatibility.** Catch Rate Display now recognizes supported AllTheMons balls by item ID without adding a hard dependency, applies their custom multipliers in the shared ball calculator, and only adds them to the comparison panel when those item IDs actually exist in the loaded item registry.
release
[NeoForge] v2.8.18
2.8.18+neoforge23 апр. 2026 г.21Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Fabric now registers `/catchrate export-rates` correctly.** The new audit export subcommand was present on NeoForge but the Fabric client entrypoint still had an older hardcoded `/catchrate` command tree, which caused Fabric clients to reject `export-rates` as an invalid argument.
release
[Fabric] v2.8.18
2.8.18+fabric23 апр. 2026 г.30Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Fabric now registers `/catchrate export-rates` correctly.** The new audit export subcommand was present on NeoForge but the Fabric client entrypoint still had an older hardcoded `/catchrate` command tree, which caused Fabric clients to reject `export-rates` as an invalid argument.
release
[Fabric] v2.8.18
2.8.18+fabric23 апр. 2026 г.28Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Fabric now registers `/catchrate export-rates` correctly.** The new audit export subcommand was present on NeoForge but the Fabric client entrypoint still had an older hardcoded `/catchrate` command tree, which caused Fabric clients to reject `export-rates` as an invalid argument.
release
[NeoForge] v2.8.17
2.8.17+neoforge22 апр. 2026 г.239Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- **Unresolved catch-rate fallback is now pessimistic.** When CatchRate Display cannot resolve a species from datapacks or classpath resources, it now uses a fallback catch rate of `3` instead of `45` so missing data no longer inflates odds into false guarantees.
- **Real `45` catch-rate species are unchanged.** Only the unresolved fallback estimate changed; any species or form resolved from actual local data still uses its real configured catch rate.
release
[Fabric] v2.8.17
2.8.17+fabric22 апр. 2026 г.442Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- **Unresolved catch-rate fallback is now pessimistic.** When CatchRate Display cannot resolve a species from datapacks or classpath resources, it now uses a fallback catch rate of `3` instead of `45` so missing data no longer inflates odds into false guarantees.
- **Real `45` catch-rate species are unchanged.** Only the unresolved fallback estimate changed; any species or form resolved from actual local data still uses its real configured catch rate.
release
[NeoForge] v2.8.14
2.8.14+neoforge6 апр. 2026 г.2,2 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Battle HUD now preserves a previously known real species through disguise and Transform cases.** If a wild target starts battle as Ditto and later disguises into another species, catch rate calculations, the HUD, the comparison panel, and capture logs keep using the remembered real species instead of switching to the copied appearance.
- **Disguised targets now stay approximate only when Cobblemon never exposed the true species to the client.** This avoids false certainty for hidden-from-frame-one illusion cases while restoring accurate rates for transform-after-reveal cases.
release
[Fabric] v2.8.14
2.8.14+fabric6 апр. 2026 г.41,3 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Battle HUD now preserves a previously known real species through disguise and Transform cases.** If a wild target starts battle as Ditto and later disguises into another species, catch rate calculations, the HUD, the comparison panel, and capture logs keep using the remembered real species instead of switching to the copied appearance.
- **Disguised targets now stay approximate only when Cobblemon never exposed the true species to the client.** This avoids false certainty for hidden-from-frame-one illusion cases while restoring accurate rates for transform-after-reveal cases.
release
[NeoForge] v2.8.13
2.8.13+neoforge6 апр. 2026 г.44Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- **Overhauled logging system to stop spamming the Minecraft log.** Routine events (battle start/end, non-guaranteed captures, turn advances) now only go to the in-memory buffer, not `latest.log`. Only actual guaranteed catch failures write to `LOGGER.error()`.
- **Added always-on `catch-outcomes.log`** in `catchrate-logs/`. Every catch attempt is logged as a single line with outcome (CAUGHT/FAILED), species, ball, multipliers, HP, and status. Rolls at 512 KB. Not gated by debug mode.
- **Removed auto-enable debug on guaranteed failure.** This was causing log floods after a single failure event.
- **All capture attempts are now tracked for outcome logging**, not just guaranteed ones.
release
[Fabric] v2.8.13
2.8.13+fabric6 апр. 2026 г.103Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- **Overhauled logging system to stop spamming the Minecraft log.** Routine events (battle start/end, non-guaranteed captures, turn advances) now only go to the in-memory buffer, not `latest.log`. Only actual guaranteed catch failures write to `LOGGER.error()`.
- **Added always-on `catch-outcomes.log`** in `catchrate-logs/`. Every catch attempt is logged as a single line with outcome (CAUGHT/FAILED), species, ball, multipliers, HP, and status. Rolls at 512 KB. Not gated by debug mode.
- **Removed auto-enable debug on guaranteed failure.** This was causing log floods after a single failure event.
- **All capture attempts are now tracked for outcome logging**, not just guaranteed ones.
release
[NeoForge] v2.8.12
2.8.12+neoforge6 апр. 2026 г.74Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Fixed false "GUARANTEED" catch rate for multi-word Pokémon** (Tapu Lele, Iron Valiant, Raging Bolt, Mr. Mime, Ho-Oh, Type: Null, etc.). The catch rate cache was looking up species by display name with spaces/punctuation (e.g., "tapu lele") but Cobblemon's data files use stripped names ("tapulele"). This caused all multi-word species to fall back to the default catch rate of 45, producing wildly inflated catch percentages — most visibly showing "GUARANTEED" on legendaries.
- **Added safeguard against false GUARANTEED on estimated catch rates.** The HUD will no longer display "GUARANTEED" when it can't verify the actual catch rate from species data.
release
[Fabric] v2.8.12
2.8.12+fabric6 апр. 2026 г.127Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Fixed false "GUARANTEED" catch rate for multi-word Pokémon** (Tapu Lele, Iron Valiant, Raging Bolt, Mr. Mime, Ho-Oh, Type: Null, etc.). The catch rate cache was looking up species by display name with spaces/punctuation (e.g., "tapu lele") but Cobblemon's data files use stripped names ("tapulele"). This caused all multi-word species to fall back to the default catch rate of 45, producing wildly inflated catch percentages — most visibly showing "GUARANTEED" on legendaries.
- **Added safeguard against false GUARANTEED on estimated catch rates.** The HUD will no longer display "GUARANTEED" when it can't verify the actual catch rate from species data.
release
[NeoForge] v2.8.11
2.8.11+neoforge2 апр. 2026 г.689Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Fabric startup works again after the rollback.** Kept the reverted HUD behavior from `2.8.10`, but restored the shared capture-tracking mixin refmap packaging so Cobblemon's battle capture handlers remap correctly on Fabric.
release
[Fabric] v2.8.11
2.8.11+fabric2 апр. 2026 г.839,2 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Fabric startup works again after the rollback.** Kept the reverted HUD behavior from `2.8.10`, but restored the shared capture-tracking mixin refmap packaging so Cobblemon's battle capture handlers remap correctly on Fabric.
release
[NeoForge] v2.8.10
2.8.10+neoforge2 апр. 2026 г.36Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Restored the last known-good HUD registration path.** Reverted the issue #22 render-order experiment and removed the new Fabric chat mixin so the mod starts normally again on Fabric.
release
[Fabric] v2.8.10
2.8.10+fabric2 апр. 2026 г.59Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Restored the last known-good HUD registration path.** Reverted the issue #22 render-order experiment and removed the new Fabric chat mixin so the mod starts normally again on Fabric.
release
[NeoForge] v2.8.9
2.8.9+neoforge2 апр. 2026 г.32Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Fabric startup no longer fails on the capture-tracking mixins.** The shared capture-start and capture-end hooks now compile as Java mixins and ship with the generated `catchrate-display-refmap.json`, which fixes the missing-remap crash introduced in 2.8.8.
release
[Fabric] v2.8.9
2.8.9+fabric2 апр. 2026 г.49Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Fabric startup no longer fails on the capture-tracking mixins.** The shared capture-start and capture-end hooks now compile as Java mixins and ship with the generated `catchrate-display-refmap.json`, which fixes the missing-remap crash introduced in 2.8.8.
release
[NeoForge] v2.8.8
2.8.8+neoforge2 апр. 2026 г.45Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Chat no longer washes out or cuts through the catch-rate HUD panel.** The HUD now registers above the vanilla chat layer on both Fabric and NeoForge instead of drawing underneath later chat overlays.
release
[Fabric] v2.8.8
2.8.8+fabric2 апр. 2026 г.56Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Chat no longer washes out or cuts through the catch-rate HUD panel.** The HUD now registers above the vanilla chat layer on both Fabric and NeoForge instead of drawing underneath later chat overlays.
release
[NeoForge] v2.8.7
2.8.7+neoforge2 апр. 2026 г.44Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Dive Ball overworld catch rates now use whether the target Pokemon is underwater, not whether the player is underwater.** This fixes false 3.5x Dive Ball bonuses when looking at a non-submerged Pokemon while the player is underwater.
release
[Fabric] v2.8.7
2.8.7+fabric2 апр. 2026 г.42Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Dive Ball overworld catch rates now use whether the target Pokemon is underwater, not whether the player is underwater.** This fixes false 3.5x Dive Ball bonuses when looking at a non-submerged Pokemon while the player is underwater.
release
[NeoForge] v2.8.6
2.8.6+neoforge2 апр. 2026 г.35Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Stopped battle-end log spam outside battle.** The HUD renderer no longer writes `Battle ended` on every frame after combat ends; that event is now logged once by the shared battle monitor.
- **Incident trail now goes to `latest.log` as well as the local incident file.** Authoritative capture-tracking events like battle start, turn advance, arming, skip reasons, success, and confirmed failure now persist to the normal Minecraft log without mirroring every routine HUD calculation there.
- **Removed dead refactor leftovers.** Cleaned unused tracker imports and an unused calculator helper left behind by the packet-based failure detection rewrite.
### Improved
- **Removed dead HUD/config cleanup leftovers.** Ball comparison is now treated as runtime key state instead of a saved config value, dead `compactMode` config was removed, the no-op compact ball-name wrapper was dropped, and guaranteed catch paths now reuse the shared max catch-rate constant.
release
[Fabric] v2.8.6
2.8.6+fabric2 апр. 2026 г.29Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Stopped battle-end log spam outside battle.** The HUD renderer no longer writes `Battle ended` on every frame after combat ends; that event is now logged once by the shared battle monitor.
- **Incident trail now goes to `latest.log` as well as the local incident file.** Authoritative capture-tracking events like battle start, turn advance, arming, skip reasons, success, and confirmed failure now persist to the normal Minecraft log without mirroring every routine HUD calculation there.
- **Removed dead refactor leftovers.** Cleaned unused tracker imports and an unused calculator helper left behind by the packet-based failure detection rewrite.
### Improved
- **Removed dead HUD/config cleanup leftovers.** Ball comparison is now treated as runtime key state instead of a saved config value, dead `compactMode` config was removed, the no-op compact ball-name wrapper was dropped, and guaranteed catch paths now reuse the shared max catch-rate constant.
release
[NeoForge] v2.8.4
2.8.4+neoforge26 мар. 2026 г.1,4 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Guaranteed catch failure warnings no longer trigger from passive HUD updates.** The failure detector now arms only after the player leaves the battle choice prompt with the same guaranteed Poke Ball still selected, and it only reports a failed catch on the next turn if that held ball stack actually changed. This stops false "guaranteed catch failed" messages from appearing just because a target's HP dropped into guaranteed range.
release
[Fabric] v2.8.4
2.8.4+fabric26 мар. 2026 г.14,4 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Guaranteed catch failure warnings no longer trigger from passive HUD updates.** The failure detector now arms only after the player leaves the battle choice prompt with the same guaranteed Poke Ball still selected, and it only reports a failed catch on the next turn if that held ball stack actually changed. This stops false "guaranteed catch failed" messages from appearing just because a target's HP dropped into guaranteed range.
release
[NeoForge] v2.8.3
2.8.3+neoforge9 мар. 2026 г.2,1 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Removed
- **Removed mclo.gs upload from `/catchrate log`.** The command now saves the debug report to a local file only (`catchrate-logs/` in the game directory). No external network calls are made by the mod.
release
[Fabric] v2.8.3
2.8.3+fabric9 мар. 2026 г.25,4 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Removed
- **Removed mclo.gs upload from `/catchrate log`.** The command now saves the debug report to a local file only (`catchrate-logs/` in the game directory). No external network calls are made by the mod.
release
[NeoForge] v2.8.2
2.8.2+neoforge8 мар. 2026 г.187Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Ancient Great Ball, Ancient Ultra Ball, and Origin Ball now show correct multipliers (1.5x, 2x, 255x).** These balls were showing 1x because their multipliers depended on Cobblemon API property lookups (`pokeBall.ancient`, `catchRateModifier.isGuaranteed()`) that silently returned false. Ball multipliers for these three are now hardcoded by name at the top of the calculation, bypassing API lookups entirely.
release
[Fabric] v2.8.2
2.8.2+fabric8 мар. 2026 г.1,2 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Ancient Great Ball, Ancient Ultra Ball, and Origin Ball now show correct multipliers (1.5x, 2x, 255x).** These balls were showing 1x because their multipliers depended on Cobblemon API property lookups (`pokeBall.ancient`, `catchRateModifier.isGuaranteed()`) that silently returned false. Ball multipliers for these three are now hardcoded by name at the top of the calculation, bypassing API lookups entirely.
release
[NeoForge] v2.8.1
2.8.1+neoforge5 мар. 2026 г.322Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Eliminated lag spike when first looking at a Pokémon with a Poké Ball.** The catch rate cache (datapack scan + classpath JSON reads for every species) was being done lazily on the render thread. Now preloads all species data on a background thread during client init, so the first lookup is instant.
release
[Fabric] v2.8.1
2.8.1+fabric5 мар. 2026 г.13,5 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Eliminated lag spike when first looking at a Pokémon with a Poké Ball.** The catch rate cache (datapack scan + classpath JSON reads for every species) was being done lazily on the render thread. Now preloads all species data on a background thread during client init, so the first lookup is instant.
release
[NeoForge] v2.8.0
2.8.0+neoforge5 мар. 2026 г.29Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- **Comprehensive debug logging system.** All catch rate calculations are now logged to an in-memory buffer with full details: Pokémon, ball, multipliers, HP, status, modified catch rate, and whether the catch was predicted as guaranteed.
- **Guaranteed catch failure detection.** If the mod predicts a 100% catch (Master Ball, or formula-guaranteed) and the Pokémon breaks free, a prominent chat notification appears with instructions to generate a debug report.
- **`/catchrate log` command.** Generates a comprehensive debug report including environment info (mod version, Minecraft version, loader, Cobblemon version, Java, OS, server type), installed mods list, config state, all recent calculation logs, guaranteed catch failures, and catch rate cache info — then uploads it to mclo.gs and gives the player a clickable link to share. Also saves a local copy to `catchrate-logs/` as fallback.
- **Auto-enable debug on failure.** Debug logging is automatically enabled for the session after a guaranteed catch failure, so subsequent calculations are captured in the report.
release
[Fabric] v2.8.0
2.8.0+fabric5 мар. 2026 г.36Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- **Comprehensive debug logging system.** All catch rate calculations are now logged to an in-memory buffer with full details: Pokémon, ball, multipliers, HP, status, modified catch rate, and whether the catch was predicted as guaranteed.
- **Guaranteed catch failure detection.** If the mod predicts a 100% catch (Master Ball, or formula-guaranteed) and the Pokémon breaks free, a prominent chat notification appears with instructions to generate a debug report.
- **`/catchrate log` command.** Generates a comprehensive debug report including environment info (mod version, Minecraft version, loader, Cobblemon version, Java, OS, server type), installed mods list, config state, all recent calculation logs, guaranteed catch failures, and catch rate cache info — then uploads it to mclo.gs and gives the player a clickable link to share. Also saves a local copy to `catchrate-logs/` as fallback.
- **Auto-enable debug on failure.** Debug logging is automatically enabled for the session after a guaranteed catch failure, so subsequent calculations are captured in the report.
release
[NeoForge] v2.7.13
2.7.13+neoforge5 мар. 2026 г.295Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- **Estimated catch rates now show a `~` prefix.** If the mod can't find a species in any local data source (datapacks or mod JARs), it falls back to the default catch rate of 45. When this happens, the HUD and ball comparison panel prefix the percentage with `~` (e.g., `~14.2%`) to indicate the value may be inaccurate. Species that genuinely have a catch rate of 45 are unaffected — the indicator only appears when no local data was found at all.
release
[Fabric] v2.7.13
2.7.13+fabric5 мар. 2026 г.124Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- **Estimated catch rates now show a `~` prefix.** If the mod can't find a species in any local data source (datapacks or mod JARs), it falls back to the default catch rate of 45. When this happens, the HUD and ball comparison panel prefix the percentage with `~` (e.g., `~14.2%`) to indicate the value may be inaccurate. Species that genuinely have a catch rate of 45 are unaffected — the indicator only appears when no local data was found at all.
release
[NeoForge] v2.7.12
2.7.12+neoforge5 мар. 2026 г.18Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- **Catch rate cache now resolves entirely from local data.** Cobblemon's Species.encode/decode never includes catchRate, so the client registry always has the default 45 for every species. The old code checked the registry first and trusted any non-45 value, which was dead logic. The cache now always resolves from local datapacks and classpath JARs — one consistent source of truth, no registry dependency.
release
[Fabric] v2.7.12
2.7.12+fabric5 мар. 2026 г.32Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- **Catch rate cache now resolves entirely from local data.** Cobblemon's Species.encode/decode never includes catchRate, so the client registry always has the default 45 for every species. The old code checked the registry first and trusted any non-45 value, which was dead logic. The cache now always resolves from local datapacks and classpath JARs — one consistent source of truth, no registry dependency.
release
[NeoForge] v2.7.11
2.7.11+neoforge5 мар. 2026 г.19Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Wrong catch rates for Meltan, Melmetal, Enamorus, Kleavor, Sneasler, and Ursaluna.** The species catch rate cache only scanned `generation1` through `generation9` on the classpath, missing Cobblemon's `generation7b` (Meltan/Melmetal) and `generation8a` (Legends: Arceus) folders. If the registry served the broken default 45, these species would show inflated catch rates (e.g., Meltan/Melmetal real rate is 3, displayed as 45 — 15x too easy).
release
[Fabric] v2.7.11
2.7.11+fabric5 мар. 2026 г.28Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Wrong catch rates for Meltan, Melmetal, Enamorus, Kleavor, Sneasler, and Ursaluna.** The species catch rate cache only scanned `generation1` through `generation9` on the classpath, missing Cobblemon's `generation7b` (Meltan/Melmetal) and `generation8a` (Legends: Arceus) folders. If the registry served the broken default 45, these species would show inflated catch rates (e.g., Meltan/Melmetal real rate is 3, displayed as 45 — 15x too easy).
release
[NeoForge] v2.7.10
2.7.10+neoforge5 мар. 2026 г.13Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Ancient Great Ball, Ultra Ball, and Origin Ball multipliers now correct.** Replaced reflection-based multiplier reading with hardcoded values: Ancient Great Ball = 1.5x, Ancient Ultra Ball = 2x, Ancient Origin Ball = guaranteed catch (255x).
release
[Fabric] v2.7.10
2.7.10+fabric5 мар. 2026 г.22Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Ancient Great Ball, Ultra Ball, and Origin Ball multipliers now correct.** Replaced reflection-based multiplier reading with hardcoded values: Ancient Great Ball = 1.5x, Ancient Ultra Ball = 2x, Ancient Origin Ball = guaranteed catch (255x).
release
[NeoForge] v2.7.9
2.7.9+neoforge4 мар. 2026 г.74Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Ancient Ultra Ball showed 1x instead of 2x.** Ancient Great Ball also showed 1x instead of 1.5x. The `calculateAncientBall()` method was returning a flat 1x for every ancient ball instead of reading the actual `MultiplierModifier` from the PokeBall object. Now dynamically reads the multiplier from Cobblemon's registry. Verified against PokeBalls.class bytecode: ancient_ultra_ball = `MultiplierModifier(2.0f)`, ancient_great_ball = `MultiplierModifier(1.5f)`, all others = null (1x). Ancient Origin Ball was already correct (caught by the `isGuaranteed()` check).
release
[Fabric] v2.7.9
2.7.9+fabric4 мар. 2026 г.481Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Ancient Ultra Ball showed 1x instead of 2x.** Ancient Great Ball also showed 1x instead of 1.5x. The `calculateAncientBall()` method was returning a flat 1x for every ancient ball instead of reading the actual `MultiplierModifier` from the PokeBall object. Now dynamically reads the multiplier from Cobblemon's registry. Verified against PokeBalls.class bytecode: ancient_ultra_ball = `MultiplierModifier(2.0f)`, ancient_great_ball = `MultiplierModifier(1.5f)`, all others = null (1x). Ancient Origin Ball was already correct (caught by the `isGuaranteed()` check).
release
[NeoForge] v2.7.8
2.7.8+neoforge24 февр. 2026 г.856Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Timer Ball multiplier was wrong.** The mod used the mainline games formula (`(turn-1) × 0.3 + 1`, capped at 4) but Cobblemon uses its own formula (`turn × 0.3`, capped at 4). At turn 10 this showed 3.7x instead of the correct 3.0x, which could inflate catch rates enough to falsely display "Guaranteed" when the actual server-side chance was ~86%.
release
[Fabric] v2.7.8
2.7.8+fabric24 февр. 2026 г.492,3 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Timer Ball multiplier was wrong.** The mod used the mainline games formula (`(turn-1) × 0.3 + 1`, capped at 4) but Cobblemon uses its own formula (`turn × 0.3`, capped at 4). At turn 10 this showed 3.7x instead of the correct 3.0x, which could inflate catch rates enough to falsely display "Guaranteed" when the actual server-side chance was ~86%.
release
[NeoForge] v2.7.7
2.7.7+neoforge23 февр. 2026 г.102Minecraft: 1.21, 1.21.1neoforge
Что нового
### Updated
- Updated French (fr_fr) translation with all missing keys — thanks to HadesDeadlyTom for the contribution.
- Added 8 missing translation keys to all 28 language files: Safari Ball tooltips, wild ball comparison header, out-of-combat penalty note, unknown/not-encountered text, and hide_unencountered command info.
release
[Fabric] v2.7.7
2.7.7+fabric23 февр. 2026 г.669Minecraft: 1.21, 1.21.1fabric
Что нового
### Updated
- Updated French (fr_fr) translation with all missing keys — thanks to HadesDeadlyTom for the contribution.
- Added 8 missing translation keys to all 28 language files: Safari Ball tooltips, wild ball comparison header, out-of-combat penalty note, unknown/not-encountered text, and hide_unencountered command info.
release
[NeoForge] v2.7.6
2.7.6+neoforge23 февр. 2026 г.69Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **Dream Ball now detects sleeping wild Pokémon.** Cobblemon sets the Sleep status server-side when Pokémon rest in the overworld, but doesn't sync it to clients. We now read the synced PoseType entity data (SLEEP pose) to detect sleeping, so both the Dream Ball 4x bonus and the 2.5x status multiplier are correctly shown for resting wild Pokémon.
- **Status multiplier now works for out-of-combat sleeping Pokémon.** The 2.5x sleep status bonus was always showing 1.0x for wild Pokémon because the status field was null client-side. Now uses the same PoseType detection.
- All out-of-combat status detection (single-ball HUD, ball comparison panel) uses the new unified `getEffectiveStatusPath()` utility.
release
[Fabric] v2.7.6
2.7.6+fabric23 февр. 2026 г.327Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Dream Ball now detects sleeping wild Pokémon.** Cobblemon sets the Sleep status server-side when Pokémon rest in the overworld, but doesn't sync it to clients. We now read the synced PoseType entity data (SLEEP pose) to detect sleeping, so both the Dream Ball 4x bonus and the 2.5x status multiplier are correctly shown for resting wild Pokémon.
- **Status multiplier now works for out-of-combat sleeping Pokémon.** The 2.5x sleep status bonus was always showing 1.0x for wild Pokémon because the status field was null client-side. Now uses the same PoseType detection.
- All out-of-combat status detection (single-ball HUD, ball comparison panel) uses the new unified `getEffectiveStatusPath()` utility.
release
[NeoForge] v2.7.5
2.7.5+neoforge23 февр. 2026 г.23Minecraft: 1.21, 1.21.1neoforge
Что нового
### Improved
- Dream Ball now shows "Needs Sleep status (battle move)" when looking at wild Pokémon instead of the misleading "Target not asleep". Wild Pokémon that appear to be resting don't have the Sleep status — it's only applied by battle moves like Spore and Hypnosis.
- Level Ball now shows "Only works in battle" when looking at wild Pokémon instead of the confusing "No level advantage", since there's no active battler to compare levels against outside of battle.
- Added new translation keys for all 28 languages.
release
[Fabric] v2.7.5
2.7.5+fabric23 февр. 2026 г.28Minecraft: 1.21, 1.21.1fabric
Что нового
### Improved
- Dream Ball now shows "Needs Sleep status (battle move)" when looking at wild Pokémon instead of the misleading "Target not asleep". Wild Pokémon that appear to be resting don't have the Sleep status — it's only applied by battle moves like Spore and Hypnosis.
- Level Ball now shows "Only works in battle" when looking at wild Pokémon instead of the confusing "No level advantage", since there's no active battler to compare levels against outside of battle.
- Added new translation keys for all 28 languages.
release
[NeoForge] v2.7.4
2.7.4+neoforge22 февр. 2026 г.63Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Fixed `hideUnencounteredInfo` config not loading correctly — Gson bypasses Kotlin constructor defaults, so the field was never persisted to the config file and its runtime value was unpredictable. Config now parses each field individually with proper defaults.
- Config file is now re-saved on load so newly added fields get written automatically.
- Added `hideUnencounteredInfo` to `/catchrate info` output (was missing entirely).
release
[Fabric] v2.7.4
2.7.4+fabric22 февр. 2026 г.547Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Fixed `hideUnencounteredInfo` config not loading correctly — Gson bypasses Kotlin constructor defaults, so the field was never persisted to the config file and its runtime value was unpredictable. Config now parses each field individually with proper defaults.
- Config file is now re-saved on load so newly added fields get written automatically.
- Added `hideUnencounteredInfo` to `/catchrate info` output (was missing entirely).
release
[NeoForge] v2.7.3
2.7.3+neoforge22 февр. 2026 г.17Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Unified guaranteed catch detection: removed 3 redundant `isGuaranteed()` checks that could disagree with each other. Now `BallMultiplierCalculator` is the single source of truth for ball behavior, and the formula result determines guaranteed status consistently across the single-ball HUD and comparison panel.
- Fixed potential mismatch where debug logs showed one catch rate but the HUD displayed a different value (caused by separate code paths computing guaranteed status independently).
release
[Fabric] v2.7.3
2.7.3+fabric22 февр. 2026 г.100Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Unified guaranteed catch detection: removed 3 redundant `isGuaranteed()` checks that could disagree with each other. Now `BallMultiplierCalculator` is the single source of truth for ball behavior, and the formula result determines guaranteed status consistently across the single-ball HUD and comparison panel.
- Fixed potential mismatch where debug logs showed one catch rate but the HUD displayed a different value (caused by separate code paths computing guaranteed status independently).
release
[NeoForge] v2.7.2
2.7.2+neoforge22 февр. 2026 г.14Minecraft: 1.21, 1.21.1neoforge
Что нового
### Improved
- Catch rate cache now scans local datapacks (ZIP and folder) and world save datapacks for species data, not just mod JARs on classpath. This means custom/modded Pokémon from datapacks get accurate catch rates too.
- Added `getGameDir()` platform helper for datapack directory resolution.
release
[Fabric] v2.7.2
2.7.2+fabric22 февр. 2026 г.22Minecraft: 1.21, 1.21.1fabric
Что нового
### Improved
- Catch rate cache now scans local datapacks (ZIP and folder) and world save datapacks for species data, not just mod JARs on classpath. This means custom/modded Pokémon from datapacks get accurate catch rates too.
- Added `getGameDir()` platform helper for datapack directory resolution.
release
[NeoForge] v2.7.1
2.7.1+neoforge22 февр. 2026 г.16Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Fixed catch rate displaying wildly wrong values on servers (e.g. "Guaranteed catch" for legendaries). Cobblemon's species sync doesn't include catchRate, so the client fell back to the default (45) for all species. The mod now reads correct catch rates directly from Cobblemon's species data files.
release
[Fabric] v2.7.1
2.7.1+fabric22 февр. 2026 г.16Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Fixed catch rate displaying wildly wrong values on servers (e.g. "Guaranteed catch" for legendaries). Cobblemon's species sync doesn't include catchRate, so the client fell back to the default (45) for all species. The mod now reads correct catch rates directly from Cobblemon's species data files.
release
[NeoForge] v2.7.0
2.7.0+neoforge21 февр. 2026 г.101Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- Unknown Pokémon obfuscation: Pokémon you haven't encountered yet show "???" for name, level, and catch rate instead of real data
- Ball comparison panel is hidden for unencountered Pokémon (falls back to obfuscated single-ball HUD)
- New config option `hideUnencounteredInfo` (default: true) to toggle the feature
release
[Fabric] v2.7.0
2.7.0+fabric21 февр. 2026 г.533Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- Unknown Pokémon obfuscation: Pokémon you haven't encountered yet show "???" for name, level, and catch rate instead of real data
- Ball comparison panel is hidden for unencountered Pokémon (falls back to obfuscated single-ball HUD)
- New config option `hideUnencounteredInfo` (default: true) to toggle the feature
release
[NeoForge] v2.6.3
2.6.3+neoforge21 февр. 2026 г.18Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Pokémon names in the HUD now display in the player's game language instead of always showing English (#14)
release
[Fabric] v2.6.3
2.6.3+fabric21 февр. 2026 г.156Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Pokémon names in the HUD now display in the player's game language instead of always showing English (#14)
release
[NeoForge] v2.6.2
2.6.2+neoforge19 февр. 2026 г.199Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Ball comparison panel (G key) no longer jerks the camera when opened or closed
release
[Fabric] v2.6.2
2.6.2+fabric19 февр. 2026 г.1,2 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Ball comparison panel (G key) no longer jerks the camera when opened or closed
release
[NeoForge] v2.6.1
2.6.1+neoforge18 февр. 2026 г.22Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- Unified in-battle and out-of-combat ball comparison panel rendering into a single system
release
[Fabric] v2.6.1
2.6.1+fabric18 февр. 2026 г.90Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- Unified in-battle and out-of-combat ball comparison panel rendering into a single system
release
[NeoForge] v2.6.0
2.6.0+neoforge18 февр. 2026 г.11Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- Ball comparison panel (G key) now works out of combat while looking at a wild Pokémon with a ball in hand
- Panel header distinguishes "Wild" vs "Turn X" context
- Footer shows 0.5x out-of-combat penalty reminder
- Balls that require combat context (Quick Ball, Timer Ball, Love Ball, Level Ball) correctly show 1x with explanatory text
---
release
[Fabric] v2.6.0
2.6.0+fabric18 февр. 2026 г.20Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- Ball comparison panel (G key) now works out of combat while looking at a wild Pokémon with a ball in hand
- Panel header distinguishes "Wild" vs "Turn X" context
- Footer shows 0.5x out-of-combat penalty reminder
- Balls that require combat context (Quick Ball, Timer Ball, Love Ball, Level Ball) correctly show 1x with explanatory text
---
release
[NeoForge] v2.5.9
2.5.9+neoforge16 февр. 2026 г.2,1 тыс.Minecraft: 1.21, 1.21.1neoforge
Что нового
### Removed
- Removed "obfuscate unknown Pokémon" feature entirely — all Pokémon info is now always visible regardless of Pokédex status
---
release
[Fabric] v2.5.9
2.5.9+fabric16 февр. 2026 г.222,9 тыс.Minecraft: 1.21, 1.21.1fabric
Что нового
### Removed
- Removed "obfuscate unknown Pokémon" feature entirely — all Pokémon info is now always visible regardless of Pokédex status
---
release
[NeoForge] v2.5.8
2.5.8+neoforge14 февр. 2026 г.84Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- All Pokémon showing "???" on multiplayer servers due to unsynced Pokédex data
---
release
[Fabric] v2.5.8
2.5.8+fabric14 февр. 2026 г.238Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- All Pokémon showing "???" on multiplayer servers due to unsynced Pokédex data
---
release
[NeoForge] v2.5.7
2.5.7+neoforge11 февр. 2026 г.73Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Pokéball Launcher catch rate now appears immediately when equipping (previously required pressing ball swap hotkey first)
---
release
[Fabric] v2.5.7
2.5.7+fabric11 февр. 2026 г.314Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Pokéball Launcher catch rate now appears immediately when equipping (previously required pressing ball swap hotkey first)
---
release
[NeoForge] v2.5.6
2.5.6+neoforge11 февр. 2026 г.29Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- Berry Pouch Pokéball Launcher support — catch rates now display for the selected ball inside the launcher
- Generic container-item ball detection via vanilla DataComponents (works with any mod that stores pokéballs in CONTAINER + CUSTOM_DATA)
---
release
[Fabric] v2.5.6
2.5.6+fabric11 февр. 2026 г.77Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- Berry Pouch Pokéball Launcher support — catch rates now display for the selected ball inside the launcher
- Generic container-item ball detection via vanilla DataComponents (works with any mod that stores pokéballs in CONTAINER + CUSTOM_DATA)
---
release
[NeoForge] v2.5.5
2.5.5+neoforge10 февр. 2026 г.31Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- NeoForge mod loading crash caused by @JvmStatic on @SubscribeEvent methods (Kotlin objects require non-static methods for instance-based event bus registration)
---
release
[Fabric] v2.5.5
2.5.5+fabric10 февр. 2026 г.100Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- NeoForge mod loading crash caused by @JvmStatic on @SubscribeEvent methods (Kotlin objects require non-static methods for instance-based event bus registration)
---
release
[NeoForge] v2.5.4
2.5.4+neoforge10 февр. 2026 г.17Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Nest Ball off-by-one: level 30 now correctly gets 1.1x instead of falling through to 1x
- NeoForge @SubscribeEvent methods annotated with @JvmStatic for proper event bus registration
- Night start tick corrected from 12000 to 13000 to match Minecraft's actual mob-spawning threshold
- Cursor restoration: hideCursor/showCursor now saves and restores the previous GLFW cursor mode instead of assuming NORMAL
- PokeBall cache upgraded from HashMap to ConcurrentHashMap to prevent corruption under concurrent access
### Changed
- BallComparisonCalculator: renamed tick-based counter fields to frame-based (lookupFrameCounter, etc.)
---
release
[Fabric] v2.5.4
2.5.4+fabric10 февр. 2026 г.55Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Nest Ball off-by-one: level 30 now correctly gets 1.1x instead of falling through to 1x
- NeoForge @SubscribeEvent methods annotated with @JvmStatic for proper event bus registration
- Night start tick corrected from 12000 to 13000 to match Minecraft's actual mob-spawning threshold
- Cursor restoration: hideCursor/showCursor now saves and restores the previous GLFW cursor mode instead of assuming NORMAL
- PokeBall cache upgraded from HashMap to ConcurrentHashMap to prevent corruption under concurrent access
### Changed
- BallComparisonCalculator: renamed tick-based counter fields to frame-based (lookupFrameCounter, etc.)
---
release
[NeoForge] v2.5.4
2.5.4+neoforge10 февр. 2026 г.12Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Nest Ball off-by-one: level 30 now correctly gets 1.1x instead of falling through to 1x
- NeoForge @SubscribeEvent methods annotated with @JvmStatic for proper event bus registration
- Night start tick corrected from 12000 to 13000 to match Minecraft's actual mob-spawning threshold
- Cursor restoration: hideCursor/showCursor now saves and restores the previous GLFW cursor mode instead of assuming NORMAL
- PokeBall cache upgraded from HashMap to ConcurrentHashMap to prevent corruption under concurrent access
- HP display shows "(full)" qualifier when displaying full-HP multiplier for wild Pokemon
### Changed
- BallComparisonCalculator: renamed tick-based counter fields to frame-based (lookupFrameCounter, etc.)
---
release
[Fabric] v2.5.4
2.5.4+fabric10 февр. 2026 г.8Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Nest Ball off-by-one: level 30 now correctly gets 1.1x instead of falling through to 1x
- NeoForge @SubscribeEvent methods annotated with @JvmStatic for proper event bus registration
- Night start tick corrected from 12000 to 13000 to match Minecraft's actual mob-spawning threshold
- Cursor restoration: hideCursor/showCursor now saves and restores the previous GLFW cursor mode instead of assuming NORMAL
- PokeBall cache upgraded from HashMap to ConcurrentHashMap to prevent corruption under concurrent access
- HP display shows "(full)" qualifier when displaying full-HP multiplier for wild Pokemon
### Changed
- BallComparisonCalculator: renamed tick-based counter fields to frame-based (lookupFrameCounter, etc.)
---
release
[NeoForge] v2.5.4
2.5.4+neoforge10 февр. 2026 г.14Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Nest Ball off-by-one: level 30 now correctly gets 1.1x instead of falling through to 1x
- Love Ball: different-species opposite-gender no longer gives 2.5x (only same-species opposite-gender gets 8x)
- Quick Ball out-of-combat: now predicts 5x first-throw bonus instead of showing misleading 1x
- NeoForge @SubscribeEvent methods annotated with @JvmStatic for proper event bus registration
- Night start tick corrected from 12000 to 13000 to match Minecraft's actual mob-spawning threshold
- Cursor restoration: hideCursor/showCursor now saves and restores the previous GLFW cursor mode instead of assuming NORMAL
- PokeBall cache upgraded from HashMap to ConcurrentHashMap to prevent corruption under concurrent access
- HP display shows "(full)" qualifier when displaying full-HP multiplier for wild Pokemon
### Changed
- BallComparisonCalculator: renamed tick-based counter fields to frame-based (lookupFrameCounter, etc.)
---
release
[Fabric] v2.5.4
2.5.4+fabric10 февр. 2026 г.14Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Nest Ball off-by-one: level 30 now correctly gets 1.1x instead of falling through to 1x
- Love Ball: different-species opposite-gender no longer gives 2.5x (only same-species opposite-gender gets 8x)
- Quick Ball out-of-combat: now predicts 5x first-throw bonus instead of showing misleading 1x
- NeoForge @SubscribeEvent methods annotated with @JvmStatic for proper event bus registration
- Night start tick corrected from 12000 to 13000 to match Minecraft's actual mob-spawning threshold
- Cursor restoration: hideCursor/showCursor now saves and restores the previous GLFW cursor mode instead of assuming NORMAL
- PokeBall cache upgraded from HashMap to ConcurrentHashMap to prevent corruption under concurrent access
- HP display shows "(full)" qualifier when displaying full-HP multiplier for wild Pokemon
### Changed
- BallComparisonCalculator: renamed tick-based counter fields to frame-based (lookupFrameCounter, etc.)
---
release
[NeoForge] v2.5.3
2.5.3+neoforge9 февр. 2026 г.23Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Ball names in comparison panel and single-ball HUD now use Cobblemon's localized item names instead of hardcoded English
- Comparison panel width now accounts for header and footer text length, preventing overflow in languages with longer translations
- Key name in "Release to close" footer wrapped in brackets for clarity
---
release
[Fabric] v2.5.3
2.5.3+fabric9 февр. 2026 г.44Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Ball names in comparison panel and single-ball HUD now use Cobblemon's localized item names instead of hardcoded English
- Comparison panel width now accounts for header and footer text length, preventing overflow in languages with longer translations
- Key name in "Release to close" footer wrapped in brackets for clarity
---
release
[NeoForge] v2.5.2
2.5.2+neoforge9 февр. 2026 г.22Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Debug logging no longer spams logs every tick — all per-frame logging now uses change-detection
- Consolidated 5 separate debug methods into 2 (one-shot events + change-only)
- Ball multiplier checks, catch rate calculations, and owned-pokemon skips only log when values actually change
---
release
[Fabric] v2.5.2
2.5.2+fabric9 февр. 2026 г.100Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Debug logging no longer spams logs every tick — all per-frame logging now uses change-detection
- Consolidated 5 separate debug methods into 2 (one-shot events + change-only)
- Ball multiplier checks, catch rate calculations, and owned-pokemon skips only log when values actually change
---
release
[NeoForge] v2.5.1
2.5.1+neoforge9 февр. 2026 г.13Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- VERSION constant stuck at 2.1.2 for 12 releases (now auto-injected from gradle.properties at build time)
---
release
[Fabric] v2.5.1
2.5.1+fabric9 февр. 2026 г.30Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- VERSION constant stuck at 2.1.2 for 12 releases (now auto-injected from gradle.properties at build time)
---
release
[NeoForge] v2.5.0
2.5.0+neoforge8 февр. 2026 г.29Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- Cursor now hides when ball comparison menu is open (G key)
- Updated cross-platform implementation guidelines for stricter Fabric/NeoForge parity
---
release
[Fabric] v2.5.0
2.5.0+fabric8 февр. 2026 г.38Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- Cursor now hides when ball comparison menu is open (G key)
- Updated cross-platform implementation guidelines for stricter Fabric/NeoForge parity
---
release
[NeoForge] v2.4.3
2.4.3+neoforge8 февр. 2026 г.12Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Status condition showing "None 2.5x" instead of "Asleep 2.5x" during battle (raw path vs display name mismatch)
---
release
[Fabric] v2.4.3
2.4.3+fabric8 февр. 2026 г.22Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Status condition showing "None 2.5x" instead of "Asleep 2.5x" during battle (raw path vs display name mismatch)
---
release
[NeoForge] v2.4.2
2.4.2+neoforge8 февр. 2026 г.8Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Safari Ball no longer gives 1.5x multiplier during battle (out-of-combat only)
- Debug logger now only logs on state changes instead of on a timer
### Removed
- Time-throttled debug logging (replaced with change-based logging)
---
release
[Fabric] v2.4.2
2.4.2+fabric8 февр. 2026 г.18Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Safari Ball no longer gives 1.5x multiplier during battle (out-of-combat only)
- Debug logger now only logs on state changes instead of on a timer
### Removed
- Time-throttled debug logging (replaced with change-based logging)
---
release
[NeoForge] v2.4.1
2.4.1+neoforge8 февр. 2026 г.10Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Timer Ball now correctly gives 1x multiplier on turn 1 (was incorrectly giving 1.3x)
---
release
[Fabric] v2.4.1
2.4.1+fabric8 февр. 2026 г.64Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Timer Ball now correctly gives 1x multiplier on turn 1 (was incorrectly giving 1.3x)
---
release
[NeoForge] v2.4.0
2.4.0+neoforge8 февр. 2026 г.17Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- Compile against Cobblemon 1.6.0 to catch API breaks at build time
- Lower Fabric Loader minimum to 0.15.0
- Fix fabric.mod.json FLK requirement to match actual Kotlin 2.2.0 dependency
### Added
- CI compatibility matrix: builds verified against Cobblemon 1.6.0 through 1.7.3
- Graceful feature degradation: catch rate displays base-only fallback if ball calculations fail
- Comparison panel falls back to single-ball HUD on error
- Out-of-combat HUD silently recovers from API failures
---
release
[Fabric] v2.4.0
2.4.0+fabric8 февр. 2026 г.29Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- Compile against Cobblemon 1.6.0 to catch API breaks at build time
- Lower Fabric Loader minimum to 0.15.0
- Fix fabric.mod.json FLK requirement to match actual Kotlin 2.2.0 dependency
### Added
- CI compatibility matrix: builds verified against Cobblemon 1.6.0 through 1.7.3
- Graceful feature degradation: catch rate displays base-only fallback if ball calculations fail
- Comparison panel falls back to single-ball HUD on error
- Out-of-combat HUD silently recovers from API failures
---
release
[NeoForge] v2.3.2
2.3.2+neoforge8 февр. 2026 г.11Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- All catch(Exception) blocks now catch(Throwable) to handle Cobblemon API version mismatches
- Guarded catchRateModifier.isGuaranteed() calls against IncompatibleClassChangeError
- Added top-level safety nets to HUD renderer and ball comparison calculator
- Eliminated force-unwrap race condition in cached result access
---
release
[Fabric] v2.3.2
2.3.2+fabric8 февр. 2026 г.20Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- All catch(Exception) blocks now catch(Throwable) to handle Cobblemon API version mismatches
- Guarded catchRateModifier.isGuaranteed() calls against IncompatibleClassChangeError
- Added top-level safety nets to HUD renderer and ball comparison calculator
- Eliminated force-unwrap race condition in cached result access
---
release
[NeoForge] v2.3.1
2.3.1+neoforge8 февр. 2026 г.11Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Crash with Cobblemon 1.6.x due to PokeBalls.getPokeBall() API incompatibility (IncompatibleClassChangeError)
---
release
[Fabric] v2.3.1
2.3.1+fabric8 февр. 2026 г.14Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Crash with Cobblemon 1.6.x due to PokeBalls.getPokeBall() API incompatibility (IncompatibleClassChangeError)
---
release
[NeoForge] v2.3.0
2.3.0+neoforge8 февр. 2026 г.13Minecraft: 1.21, 1.21.1neoforge
Что нового
### Added
- Unknown Pokémon obfuscation: name, catch rate, and HP multiplier show as "???" for species not yet in your Pokédex
- New `obfuscateUnknown` config option (default: true) to toggle obfuscation
- `BallContextFactory.isSpeciesKnown()` public API for Pokédex encounter checks
---
release
[Fabric] v2.3.0
2.3.0+fabric8 февр. 2026 г.18Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- Unknown Pokémon obfuscation: name, catch rate, and HP multiplier show as "???" for species not yet in your Pokédex
- New `obfuscateUnknown` config option (default: true) to toggle obfuscation
- `BallContextFactory.isSpeciesKnown()` public API for Pokédex encounter checks
---
release
[NeoForge] v2.2.0
2.2.0+neoforge8 февр. 2026 г.15Minecraft: 1.21, 1.21.1neoforge
Что нового
### Changed
- Unified in-battle and out-of-combat HUD into a single consistent layout
- HUD header now shows Pokemon name and level instead of generic "Catch Rate" text
- Replaced HP health bar with text-based HP multiplier display (e.g. "HP 0.85x")
- HP multiplier color-coded by catch benefit (green = low HP, red = full HP)
### Removed
- Health bar rendering code (drawHealthBar, HEALTH_BAR_HEIGHT constant)
- Separate out-of-combat HUD renderer
---
release
[Fabric] v2.2.0
2.2.0+fabric8 февр. 2026 г.34Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- Unified in-battle and out-of-combat HUD into a single consistent layout
- HUD header now shows Pokemon name and level instead of generic "Catch Rate" text
- Replaced HP health bar with text-based HP multiplier display (e.g. "HP 0.85x")
- HP multiplier color-coded by catch benefit (green = low HP, red = full HP)
### Removed
- Health bar rendering code (drawHealthBar, HEALTH_BAR_HEIGHT constant)
- Separate out-of-combat HUD renderer
---
release
[NeoForge] v2.1.2
2.1.2+neoforge8 февр. 2026 г.15Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Turn count tracking now uses mustChoose transitions instead of pendingActionRequests size comparison (fixes Timer Ball/Quick Ball showing wrong multiplier after turn 1)
- Out-of-combat guaranteed catch detection now checks formula result, not just ball flag
- NeoForge GUI layer namespace now uses underscore mod ID for consistency
- Ball multiplier color tiers in comparison panel now match main HUD (distinguishes 1.5x/2.0x/3.0x)
- Lure Ball no longer uses unrelated Pokédex data as a proxy for aspect availability
- resetState() now fully resets turn tracking fields
---
release
[Fabric] v2.1.2
2.1.2+fabric8 февр. 2026 г.14Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Turn count tracking now uses mustChoose transitions instead of pendingActionRequests size comparison (fixes Timer Ball/Quick Ball showing wrong multiplier after turn 1)
- Out-of-combat guaranteed catch detection now checks formula result, not just ball flag
- NeoForge GUI layer namespace now uses underscore mod ID for consistency
- Ball multiplier color tiers in comparison panel now match main HUD (distinguishes 1.5x/2.0x/3.0x)
- Lure Ball no longer uses unrelated Pokédex data as a proxy for aspect availability
- resetState() now fully resets turn tracking fields
---
release
[NeoForge] v2.1.1
2.1.1+neoforge8 февр. 2026 г.17Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- /catchrate commands now use proper Fabric client command API (fixes potential crashes)
- Command messages are now fully localized (translation keys in all 28 languages)
---
release
[Fabric] v2.1.1
2.1.1+fabric8 февр. 2026 г.17Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- /catchrate commands now use proper Fabric client command API (fixes potential crashes)
- Command messages are now fully localized (translation keys in all 28 languages)
---
release
[NeoForge] v2.1.0
2.1.0+neoforge8 февр. 2026 г.11Minecraft: 1.21, 1.21.1neoforge
Что нового
### Enhanced Debug Logging
Makes troubleshooting easier for players and developers.
### Added
- `/catchrate debug` command — toggles verbose logging for current session
- `/catchrate info` command — shows mod version, config, and environment info
- Calculation trace logging showing Pokemon, ball, HP, status, and result
- Ball multiplier logging for every ball type with condition status
- HUD decision logging (why HUD is/isn't showing)
- State-change logging (target changed, ball changed, etc.)
- Environment dump on debug enable (Minecraft version, Cobblemon version, loader)
- Session-based debug override (toggle without editing config file)
### Changed
- Debug system now uses `isDebugActive` which respects both config and session toggle
- Startup logging now includes mod version
---
release
[Fabric] v2.1.0
2.1.0+fabric8 февр. 2026 г.19Minecraft: 1.21, 1.21.1fabric
Что нового
### Enhanced Debug Logging
Makes troubleshooting easier for players and developers.
### Added
- `/catchrate debug` command — toggles verbose logging for current session
- `/catchrate info` command — shows mod version, config, and environment info
- Calculation trace logging showing Pokemon, ball, HP, status, and result
- Ball multiplier logging for every ball type with condition status
- HUD decision logging (why HUD is/isn't showing)
- State-change logging (target changed, ball changed, etc.)
- Environment dump on debug enable (Minecraft version, Cobblemon version, loader)
- Session-based debug override (toggle without editing config file)
### Changed
- Debug system now uses `isDebugActive` which respects both config and session toggle
- Startup logging now includes mod version
---
release
[NeoForge] v2.0.0
2.0.0+neoforge8 февр. 2026 г.13Minecraft: 1.21, 1.21.1neoforge
Что нового
### Pure Client-Side Rewrite
**CatchRate Display is now 100% client-side.** No server installation needed — works on any Cobblemon server.
This major release completely removes the server component (~1400 lines of code deleted). All catch rate calculations now use Cobblemon's client-synced data, providing the same accuracy as before while eliminating server dependency.
### Added
- **Level Ball** client-side calculation using active battler level
- **Repeat Ball** client-side calculation using synced Pokédex data
- **Lure Ball** client-side calculation using Pokemon entity aspects
### Changed
- Mod environment changed from universal to client-only
- All ball multipliers now calculate entirely on client
- Simplified HUD rendering (single unified path)
- Updated mod descriptions to reflect pure client-side nature
### Removed
- Entire server networking layer (3 files, ~560 lines)
- `CatchRateServerNetworking.kt`, `CatchRateClientNetworking.kt`, `CatchRatePackets.kt`
- Server detection and dual-mode logic
- Platform networking methods (`sendToServer()`, `sendToPlayer()`)
- "Requires server mod" warning messages from all 28 language files
### Fixed
- Level Ball now uses correct active battler level (was using party max level)
- Repeat Ball works in multiplayer without server mod
- Lure Ball works for fishing encounters without server mod
- Lure Ball now works during battle (uses battle state instead of entity lookup)
- Reduced debug log spam with per-category throttling
---
release
[Fabric] v2.0.0
2.0.0+fabric8 февр. 2026 г.18Minecraft: 1.21, 1.21.1fabric
Что нового
### Pure Client-Side Rewrite
**CatchRate Display is now 100% client-side.** No server installation needed — works on any Cobblemon server.
This major release completely removes the server component (~1400 lines of code deleted). All catch rate calculations now use Cobblemon's client-synced data, providing the same accuracy as before while eliminating server dependency.
### Added
- **Level Ball** client-side calculation using active battler level
- **Repeat Ball** client-side calculation using synced Pokédex data
- **Lure Ball** client-side calculation using Pokemon entity aspects
### Changed
- Mod environment changed from universal to client-only
- All ball multipliers now calculate entirely on client
- Simplified HUD rendering (single unified path)
- Updated mod descriptions to reflect pure client-side nature
### Removed
- Entire server networking layer (3 files, ~560 lines)
- `CatchRateServerNetworking.kt`, `CatchRateClientNetworking.kt`, `CatchRatePackets.kt`
- Server detection and dual-mode logic
- Platform networking methods (`sendToServer()`, `sendToPlayer()`)
- "Requires server mod" warning messages from all 28 language files
### Fixed
- Level Ball now uses correct active battler level (was using party max level)
- Repeat Ball works in multiplayer without server mod
- Lure Ball works for fishing encounters without server mod
- Lure Ball now works during battle (uses battle state instead of entity lookup)
- Reduced debug log spam with per-category throttling
---
release
[NeoForge] v1.4.1
1.4.1+neoforge8 февр. 2026 г.13Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- Lure Ball now works during battle — uses ClientBattlePokemon state aspects instead of entity UUID lookup (entity is despawned during battle)
- Debug log spam reduced with per-category throttling (max once per 2 seconds)
release
[Fabric] v1.4.1
1.4.1+fabric8 февр. 2026 г.20Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Lure Ball now works during battle — uses ClientBattlePokemon state aspects instead of entity UUID lookup (entity is despawned during battle)
- Debug log spam reduced with per-category throttling (max once per 2 seconds)
release
[NeoForge] v1.3.4
1.3.4+neoforge8 февр. 2026 г.41Minecraft: 1.21, 1.21.1neoforge
Что нового
### Fixed
- **NeoForge crash on startup: "Expected @SubscribeEvent method to NOT be static"**
- Removed `@JvmStatic` from all `@SubscribeEvent` methods in NeoForge client event handlers
- KotlinForForge registers Kotlin `object` singletons as instances, which requires non-static methods
- `@JvmStatic` caused NeoForge's event bus to reject the registration
release
[Fabric] v1.3.4
1.3.4+fabric8 февр. 2026 г.28Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **NeoForge crash on startup: "Expected @SubscribeEvent method to NOT be static"**
- Removed `@JvmStatic` from all `@SubscribeEvent` methods in NeoForge client event handlers
- KotlinForForge registers Kotlin `object` singletons as instances, which requires non-static methods
- `@JvmStatic` caused NeoForge's event bus to reject the registration
release
[NeoForge] v1.3.1
1.3.1+neoforge7 февр. 2026 г.31Minecraft: 1.21, 1.21.1neoforge
Что нового
### Performance
- Eliminated duplicate catch rate calculations in both single-ball and comparison displays
- Added PokeBall registry lookup caching to reduce repeated ResourceLocation allocations
- Optimized base speed stat lookup using direct enum key access instead of iteration
- Removed unused world response cache allocation
- **No gameplay or feature changes** - pure performance improvements
release
[NeoForge] v1.3.1
1.3.1+neoforge7 февр. 2026 г.16Minecraft: 1.21, 1.21.1neoforge
Что нового
### Performance
- Eliminated duplicate catch rate calculations in both single-ball and comparison displays
- Added PokeBall registry lookup caching to reduce repeated ResourceLocation allocations
- Optimized base speed stat lookup using direct enum key access instead of iteration
- Removed unused world response cache allocation
- **No gameplay or feature changes** - pure performance improvements
release
[Fabric] v1.3.1
1.3.1+fabric7 февр. 2026 г.40Minecraft: 1.21, 1.21.1fabric
Что нового
### Performance
- Eliminated duplicate catch rate calculations in both single-ball and comparison displays
- Added PokeBall registry lookup caching to reduce repeated ResourceLocation allocations
- Optimized base speed stat lookup using direct enum key access instead of iteration
- Removed unused world response cache allocation
- **No gameplay or feature changes** - pure performance improvements
release
[Fabric] v1.3.1
1.3.1+fabric7 февр. 2026 г.14Minecraft: 1.21, 1.21.1fabric
Что нового
### Performance
- Eliminated duplicate catch rate calculations in both single-ball and comparison displays
- Added PokeBall registry lookup caching to reduce repeated ResourceLocation allocations
- Optimized base speed stat lookup using direct enum key access instead of iteration
- Removed unused world response cache allocation
- **No gameplay or feature changes** - pure performance improvements
release
[NeoForge] v1.3.0
1.3.0+neoforge7 февр. 2026 г.38Minecraft: 1.21, 1.21.1neoforge
Что нового
### Major: Architectury Multiloader Support
- **CatchRate Display now supports both Fabric AND NeoForge!**
- Migrated from Fabric-only to Architectury multiloader build system
- Common codebase shared between both platforms (~90% code reuse)
- Platform-specific entrypoints for Fabric (`ModInitializer`/`ClientModInitializer`) and NeoForge (`@Mod`/`@EventBusSubscriber`)
- Platform abstraction layer (`PlatformHelper` with `@ExpectPlatform`) for config paths, networking, and mod loader detection
- Separate JARs produced for each loader (Fabric and NeoForge)
- Remapped entire codebase from Yarn to Mojang mappings (50+ API name changes) for Architectury compatibility
- `PlayerEntity` → `Player`, `MinecraftClient` → `Minecraft`, `DrawContext` → `GuiGraphics`
- `Text` → `Component`, `Formatting` → `ChatFormatting`, `Identifier` → `ResourceLocation`
- `KeyBinding` → `KeyMapping`, `ItemStack` methods, `World` → `Level`, and many more
- Network system rewritten using `CustomPacketPayload` with `StreamCodec` (Mojmap 1.21+ API)
- Fabric: `PayloadTypeRegistry` registration
- NeoForge: `RegisterPayloadHandlersEvent` with versioned registrar
- HUD rendering abstracted per platform
- Fabric: `HudRenderCallback.EVENT`
- NeoForge: `RegisterGuiLayersEvent.registerAboveAll`
### Localization Overhaul
- **28 language files** now included with full translations:
- English (US, GB, Pirate), Czech, German, Greek, Esperanto, Spanish (Spain, Mexico),
French (France, Canada), Hungarian, Italian, Japanese, Korean, Dutch, Polish,
Portuguese (Brazil, Portugal), Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese,
Chinese (Simplified, Traditional, Hong Kong)
- All HUD text, config descriptions, ball names, status effects, and condition descriptions
are now translatable
- Fixed locale-dependent number formatting (decimal separators now consistent)
- Dynamic keybind display names now localized
### Fixed
- **Out-of-combat catch rate now accurate in multiplayer** (Fixes [#1](https://github.com/Akkiruk/catchrate-display/issues/1))
- On non-host multiplayer clients, every Pokemon showed the same catch rate (e.g. 7.1% with Poke Ball)
- Root cause: The out-of-combat code path calculated catch rates entirely client-side, but Cobblemon
does not fully sync species data (`catchRate`, `maxHealth`, etc.) to non-host clients
- Fix: Added server-side networking for out-of-combat catch rate calculation, mirroring the approach
already used for in-battle calculations
- New `WorldCatchRateRequestPayload` packet (sends entity network ID + ball type to server)
- Server handler looks up `PokemonEntity` by ID and calculates with full species data
- Client uses server response when available, falls back to client-side calculation when
server mod is not installed
- Reuses existing `CatchRateResponsePayload` for the response
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
- Removed dead code and unused imports
### Technical
- Build system: 3-subproject Gradle structure (`common/`, `fabric/`, `neoforge/`) with Architectury Loom 1.9.424
- Architect Plugin 3.4.162 for cross-platform compilation
- Mojang mappings + Parchment for parameter name readability
- `@ExpectPlatform` pattern for platform-specific implementations (`PlatformHelper`)
- Fabric: `FabricLoader` API, `ClientPlayNetworking`
- NeoForge: `FMLPaths`, `PacketDistributor`
- Source files organized: 14 common, 3 Fabric-specific, 3 NeoForge-specific
- Minimum Cobblemon 1.6+, Minecraft 1.21
release
[Fabric] v1.3.0
1.3.0+fabric7 февр. 2026 г.33Minecraft: 1.21, 1.21.1fabric
Что нового
### Major: Architectury Multiloader Support
- **CatchRate Display now supports both Fabric AND NeoForge!**
- Migrated from Fabric-only to Architectury multiloader build system
- Common codebase shared between both platforms (~90% code reuse)
- Platform-specific entrypoints for Fabric (`ModInitializer`/`ClientModInitializer`) and NeoForge (`@Mod`/`@EventBusSubscriber`)
- Platform abstraction layer (`PlatformHelper` with `@ExpectPlatform`) for config paths, networking, and mod loader detection
- Separate JARs produced for each loader (Fabric and NeoForge)
- Remapped entire codebase from Yarn to Mojang mappings (50+ API name changes) for Architectury compatibility
- `PlayerEntity` → `Player`, `MinecraftClient` → `Minecraft`, `DrawContext` → `GuiGraphics`
- `Text` → `Component`, `Formatting` → `ChatFormatting`, `Identifier` → `ResourceLocation`
- `KeyBinding` → `KeyMapping`, `ItemStack` methods, `World` → `Level`, and many more
- Network system rewritten using `CustomPacketPayload` with `StreamCodec` (Mojmap 1.21+ API)
- Fabric: `PayloadTypeRegistry` registration
- NeoForge: `RegisterPayloadHandlersEvent` with versioned registrar
- HUD rendering abstracted per platform
- Fabric: `HudRenderCallback.EVENT`
- NeoForge: `RegisterGuiLayersEvent.registerAboveAll`
### Localization Overhaul
- **28 language files** now included with full translations:
- English (US, GB, Pirate), Czech, German, Greek, Esperanto, Spanish (Spain, Mexico),
French (France, Canada), Hungarian, Italian, Japanese, Korean, Dutch, Polish,
Portuguese (Brazil, Portugal), Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese,
Chinese (Simplified, Traditional, Hong Kong)
- All HUD text, config descriptions, ball names, status effects, and condition descriptions
are now translatable
- Fixed locale-dependent number formatting (decimal separators now consistent)
- Dynamic keybind display names now localized
### Fixed
- **Out-of-combat catch rate now accurate in multiplayer** (Fixes [#1](https://github.com/Akkiruk/catchrate-display/issues/1))
- On non-host multiplayer clients, every Pokemon showed the same catch rate (e.g. 7.1% with Poke Ball)
- Root cause: The out-of-combat code path calculated catch rates entirely client-side, but Cobblemon
does not fully sync species data (`catchRate`, `maxHealth`, etc.) to non-host clients
- Fix: Added server-side networking for out-of-combat catch rate calculation, mirroring the approach
already used for in-battle calculations
- New `WorldCatchRateRequestPayload` packet (sends entity network ID + ball type to server)
- Server handler looks up `PokemonEntity` by ID and calculates with full species data
- Client uses server response when available, falls back to client-side calculation when
server mod is not installed
- Reuses existing `CatchRateResponsePayload` for the response
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
- Removed dead code and unused imports
### Technical
- Build system: 3-subproject Gradle structure (`common/`, `fabric/`, `neoforge/`) with Architectury Loom 1.9.424
- Architect Plugin 3.4.162 for cross-platform compilation
- Mojang mappings + Parchment for parameter name readability
- `@ExpectPlatform` pattern for platform-specific implementations (`PlatformHelper`)
- Fabric: `FabricLoader` API, `ClientPlayNetworking`
- NeoForge: `FMLPaths`, `PacketDistributor`
- Source files organized: 14 common, 3 Fabric-specific, 3 NeoForge-specific
- Minimum Cobblemon 1.6+, Minecraft 1.21
release
[NeoForge] v1.3.0
1.3.0+neoforge7 февр. 2026 г.36Minecraft: 1.21, 1.21.1neoforge
Что нового
### Major: Architectury Multiloader Support
- **CatchRate Display now supports both Fabric AND NeoForge!**
- Migrated from Fabric-only to Architectury multiloader build system
- Common codebase shared between both platforms (~90% code reuse)
- Platform-specific entrypoints for Fabric (`ModInitializer`/`ClientModInitializer`) and NeoForge (`@Mod`/`@EventBusSubscriber`)
- Platform abstraction layer (`PlatformHelper` with `@ExpectPlatform`) for config paths, networking, and mod loader detection
- Separate JARs produced for each loader (Fabric and NeoForge)
- Remapped entire codebase from Yarn to Mojang mappings (50+ API name changes) for Architectury compatibility
- `PlayerEntity` → `Player`, `MinecraftClient` → `Minecraft`, `DrawContext` → `GuiGraphics`
- `Text` → `Component`, `Formatting` → `ChatFormatting`, `Identifier` → `ResourceLocation`
- `KeyBinding` → `KeyMapping`, `ItemStack` methods, `World` → `Level`, and many more
- Network system rewritten using `CustomPacketPayload` with `StreamCodec` (Mojmap 1.21+ API)
- Fabric: `PayloadTypeRegistry` registration
- NeoForge: `RegisterPayloadHandlersEvent` with versioned registrar
- HUD rendering abstracted per platform
- Fabric: `HudRenderCallback.EVENT`
- NeoForge: `RegisterGuiLayersEvent.registerAboveAll`
### Localization Overhaul
- **28 language files** now included with full translations:
- English (US, GB, Pirate), Czech, German, Greek, Esperanto, Spanish (Spain, Mexico),
French (France, Canada), Hungarian, Italian, Japanese, Korean, Dutch, Polish,
Portuguese (Brazil, Portugal), Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese,
Chinese (Simplified, Traditional, Hong Kong)
- All HUD text, config descriptions, ball names, status effects, and condition descriptions
are now translatable
- Fixed locale-dependent number formatting (decimal separators now consistent)
- Dynamic keybind display names now localized
### Fixed
- **Out-of-combat catch rate now accurate in multiplayer** (Fixes [#1](https://github.com/Akkiruk/catchrate-display/issues/1))
- On non-host multiplayer clients, every Pokemon showed the same catch rate (e.g. 7.1% with Poke Ball)
- Root cause: The out-of-combat code path calculated catch rates entirely client-side, but Cobblemon
does not fully sync species data (`catchRate`, `maxHealth`, etc.) to non-host clients
- Fix: Added server-side networking for out-of-combat catch rate calculation, mirroring the approach
already used for in-battle calculations
- New `WorldCatchRateRequestPayload` packet (sends entity network ID + ball type to server)
- Server handler looks up `PokemonEntity` by ID and calculates with full species data
- Client uses server response when available, falls back to client-side calculation when
server mod is not installed
- Reuses existing `CatchRateResponsePayload` for the response
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
- Removed dead code and unused imports
### Technical
- Build system: 3-subproject Gradle structure (`common/`, `fabric/`, `neoforge/`) with Architectury Loom 1.9.424
- Architect Plugin 3.4.162 for cross-platform compilation
- Mojang mappings + Parchment for parameter name readability
- `@ExpectPlatform` pattern for platform-specific implementations (`PlatformHelper`)
- Fabric: `FabricLoader` API, `ClientPlayNetworking`
- NeoForge: `FMLPaths`, `PacketDistributor`
- Source files organized: 14 common, 3 Fabric-specific, 3 NeoForge-specific
- Minimum Cobblemon 1.6+, Minecraft 1.21
release
[Fabric] v1.3.0
1.3.0+fabric7 февр. 2026 г.29Minecraft: 1.21, 1.21.1fabric
Что нового
### Major: Architectury Multiloader Support
- **CatchRate Display now supports both Fabric AND NeoForge!**
- Migrated from Fabric-only to Architectury multiloader build system
- Common codebase shared between both platforms (~90% code reuse)
- Platform-specific entrypoints for Fabric (`ModInitializer`/`ClientModInitializer`) and NeoForge (`@Mod`/`@EventBusSubscriber`)
- Platform abstraction layer (`PlatformHelper` with `@ExpectPlatform`) for config paths, networking, and mod loader detection
- Separate JARs produced for each loader (Fabric and NeoForge)
- Remapped entire codebase from Yarn to Mojang mappings (50+ API name changes) for Architectury compatibility
- `PlayerEntity` → `Player`, `MinecraftClient` → `Minecraft`, `DrawContext` → `GuiGraphics`
- `Text` → `Component`, `Formatting` → `ChatFormatting`, `Identifier` → `ResourceLocation`
- `KeyBinding` → `KeyMapping`, `ItemStack` methods, `World` → `Level`, and many more
- Network system rewritten using `CustomPacketPayload` with `StreamCodec` (Mojmap 1.21+ API)
- Fabric: `PayloadTypeRegistry` registration
- NeoForge: `RegisterPayloadHandlersEvent` with versioned registrar
- HUD rendering abstracted per platform
- Fabric: `HudRenderCallback.EVENT`
- NeoForge: `RegisterGuiLayersEvent.registerAboveAll`
### Localization Overhaul
- **28 language files** now included with full translations:
- English (US, GB, Pirate), Czech, German, Greek, Esperanto, Spanish (Spain, Mexico),
French (France, Canada), Hungarian, Italian, Japanese, Korean, Dutch, Polish,
Portuguese (Brazil, Portugal), Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese,
Chinese (Simplified, Traditional, Hong Kong)
- All HUD text, config descriptions, ball names, status effects, and condition descriptions
are now translatable
- Fixed locale-dependent number formatting (decimal separators now consistent)
- Dynamic keybind display names now localized
### Fixed
- **Out-of-combat catch rate now accurate in multiplayer** (Fixes [#1](https://github.com/Akkiruk/catchrate-display/issues/1))
- On non-host multiplayer clients, every Pokemon showed the same catch rate (e.g. 7.1% with Poke Ball)
- Root cause: The out-of-combat code path calculated catch rates entirely client-side, but Cobblemon
does not fully sync species data (`catchRate`, `maxHealth`, etc.) to non-host clients
- Fix: Added server-side networking for out-of-combat catch rate calculation, mirroring the approach
already used for in-battle calculations
- New `WorldCatchRateRequestPayload` packet (sends entity network ID + ball type to server)
- Server handler looks up `PokemonEntity` by ID and calculates with full species data
- Client uses server response when available, falls back to client-side calculation when
server mod is not installed
- Reuses existing `CatchRateResponsePayload` for the response
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
- Removed dead code and unused imports
### Technical
- Build system: 3-subproject Gradle structure (`common/`, `fabric/`, `neoforge/`) with Architectury Loom 1.9.424
- Architect Plugin 3.4.162 for cross-platform compilation
- Mojang mappings + Parchment for parameter name readability
- `@ExpectPlatform` pattern for platform-specific implementations (`PlatformHelper`)
- Fabric: `FabricLoader` API, `ClientPlayNetworking`
- NeoForge: `FMLPaths`, `PacketDistributor`
- Source files organized: 14 common, 3 Fabric-specific, 3 NeoForge-specific
- Minimum Cobblemon 1.6+, Minecraft 1.21
release
[NeoForge] v1.3.0
1.3.0+neoforge7 февр. 2026 г.29Minecraft: 1.21, 1.21.1neoforge
Что нового
### Major: Architectury Multiloader Support
- **CatchRate Display now supports both Fabric AND NeoForge!**
- Migrated from Fabric-only to Architectury multiloader build system
- Common codebase shared between both platforms (~90% code reuse)
- Platform-specific entrypoints for Fabric (`ModInitializer`/`ClientModInitializer`) and NeoForge (`@Mod`/`@EventBusSubscriber`)
- Platform abstraction layer (`PlatformHelper` with `@ExpectPlatform`) for config paths, networking, and mod loader detection
- Separate JARs produced for each loader (Fabric and NeoForge)
- Remapped entire codebase from Yarn to Mojang mappings (50+ API name changes) for Architectury compatibility
- `PlayerEntity` → `Player`, `MinecraftClient` → `Minecraft`, `DrawContext` → `GuiGraphics`
- `Text` → `Component`, `Formatting` → `ChatFormatting`, `Identifier` → `ResourceLocation`
- `KeyBinding` → `KeyMapping`, `ItemStack` methods, `World` → `Level`, and many more
- Network system rewritten using `CustomPacketPayload` with `StreamCodec` (Mojmap 1.21+ API)
- Fabric: `PayloadTypeRegistry` registration
- NeoForge: `RegisterPayloadHandlersEvent` with versioned registrar
- HUD rendering abstracted per platform
- Fabric: `HudRenderCallback.EVENT`
- NeoForge: `RegisterGuiLayersEvent.registerAboveAll`
### Localization Overhaul
- **28 language files** now included with full translations:
- English (US, GB, Pirate), Czech, German, Greek, Esperanto, Spanish (Spain, Mexico),
French (France, Canada), Hungarian, Italian, Japanese, Korean, Dutch, Polish,
Portuguese (Brazil, Portugal), Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese,
Chinese (Simplified, Traditional, Hong Kong)
- All HUD text, config descriptions, ball names, status effects, and condition descriptions
are now translatable
- Fixed locale-dependent number formatting (decimal separators now consistent)
- Dynamic keybind display names now localized
### Fixed
- **Out-of-combat catch rate now accurate in multiplayer** (Fixes [#1](https://github.com/Akkiruk/catchrate-display/issues/1))
- On non-host multiplayer clients, every Pokemon showed the same catch rate (e.g. 7.1% with Poke Ball)
- Root cause: The out-of-combat code path calculated catch rates entirely client-side, but Cobblemon
does not fully sync species data (`catchRate`, `maxHealth`, etc.) to non-host clients
- Fix: Added server-side networking for out-of-combat catch rate calculation, mirroring the approach
already used for in-battle calculations
- New `WorldCatchRateRequestPayload` packet (sends entity network ID + ball type to server)
- Server handler looks up `PokemonEntity` by ID and calculates with full species data
- Client uses server response when available, falls back to client-side calculation when
server mod is not installed
- Reuses existing `CatchRateResponsePayload` for the response
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
- Removed dead code and unused imports
### Technical
- Build system: 3-subproject Gradle structure (`common/`, `fabric/`, `neoforge/`) with Architectury Loom 1.9.424
- Architect Plugin 3.4.162 for cross-platform compilation
- Mojang mappings + Parchment for parameter name readability
- `@ExpectPlatform` pattern for platform-specific implementations (`PlatformHelper`)
- Fabric: `FabricLoader` API, `ClientPlayNetworking`
- NeoForge: `FMLPaths`, `PacketDistributor`
- Source files organized: 14 common, 3 Fabric-specific, 3 NeoForge-specific
- Minimum Cobblemon 1.6+, Minecraft 1.21
release
[Fabric] v1.3.0
1.3.0+fabric7 февр. 2026 г.21Minecraft: 1.21, 1.21.1fabric
Что нового
### Major: Architectury Multiloader Support
- **CatchRate Display now supports both Fabric AND NeoForge!**
- Migrated from Fabric-only to Architectury multiloader build system
- Common codebase shared between both platforms (~90% code reuse)
- Platform-specific entrypoints for Fabric (`ModInitializer`/`ClientModInitializer`) and NeoForge (`@Mod`/`@EventBusSubscriber`)
- Platform abstraction layer (`PlatformHelper` with `@ExpectPlatform`) for config paths, networking, and mod loader detection
- Separate JARs produced for each loader (Fabric and NeoForge)
- Remapped entire codebase from Yarn to Mojang mappings (50+ API name changes) for Architectury compatibility
- `PlayerEntity` → `Player`, `MinecraftClient` → `Minecraft`, `DrawContext` → `GuiGraphics`
- `Text` → `Component`, `Formatting` → `ChatFormatting`, `Identifier` → `ResourceLocation`
- `KeyBinding` → `KeyMapping`, `ItemStack` methods, `World` → `Level`, and many more
- Network system rewritten using `CustomPacketPayload` with `StreamCodec` (Mojmap 1.21+ API)
- Fabric: `PayloadTypeRegistry` registration
- NeoForge: `RegisterPayloadHandlersEvent` with versioned registrar
- HUD rendering abstracted per platform
- Fabric: `HudRenderCallback.EVENT`
- NeoForge: `RegisterGuiLayersEvent.registerAboveAll`
### Localization Overhaul
- **28 language files** now included with full translations:
- English (US, GB, Pirate), Czech, German, Greek, Esperanto, Spanish (Spain, Mexico),
French (France, Canada), Hungarian, Italian, Japanese, Korean, Dutch, Polish,
Portuguese (Brazil, Portugal), Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese,
Chinese (Simplified, Traditional, Hong Kong)
- All HUD text, config descriptions, ball names, status effects, and condition descriptions
are now translatable
- Fixed locale-dependent number formatting (decimal separators now consistent)
- Dynamic keybind display names now localized
### Fixed
- **Out-of-combat catch rate now accurate in multiplayer** (Fixes [#1](https://github.com/Akkiruk/catchrate-display/issues/1))
- On non-host multiplayer clients, every Pokemon showed the same catch rate (e.g. 7.1% with Poke Ball)
- Root cause: The out-of-combat code path calculated catch rates entirely client-side, but Cobblemon
does not fully sync species data (`catchRate`, `maxHealth`, etc.) to non-host clients
- Fix: Added server-side networking for out-of-combat catch rate calculation, mirroring the approach
already used for in-battle calculations
- New `WorldCatchRateRequestPayload` packet (sends entity network ID + ball type to server)
- Server handler looks up `PokemonEntity` by ID and calculates with full species data
- Client uses server response when available, falls back to client-side calculation when
server mod is not installed
- Reuses existing `CatchRateResponsePayload` for the response
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
- Removed dead code and unused imports
### Technical
- Build system: 3-subproject Gradle structure (`common/`, `fabric/`, `neoforge/`) with Architectury Loom 1.9.424
- Architect Plugin 3.4.162 for cross-platform compilation
- Mojang mappings + Parchment for parameter name readability
- `@ExpectPlatform` pattern for platform-specific implementations (`PlatformHelper`)
- Fabric: `FabricLoader` API, `ClientPlayNetworking`
- NeoForge: `FMLPaths`, `PacketDistributor`
- Source files organized: 14 common, 3 Fabric-specific, 3 NeoForge-specific
- Minimum Cobblemon 1.6+, Minecraft 1.21
release
v1.2.33
1.2.337 февр. 2026 г.39Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
release
v1.2.33
1.2.337 февр. 2026 г.37Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Ball comparison panel now properly updates when turn count changes (Timer Ball, Quick Ball)
- Ball comparison cache cleared on battle start, turn increment, and HP/status/target changes
release
v1.2.32
1.2.327 февр. 2026 г.81Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Critical formula accuracy fixes** - now matches Cobblemon's exact shake calculation
- Changed shake probability divisor from 65536 to 65537 (Cobblemon uses `Random.nextInt(65537)`)
- Added `.roundToInt()` to shake probability calculation to match Cobblemon's integer comparison
- Formula-guaranteed catches (shakeProbability >= 65537) now correctly display 100% instead of 99.9%
- Example: Quick Ball turn 1 on high-catch-rate Pokemon like Sentret is mathematically guaranteed
- Both client-side and server-side calculations now detect formula guarantees
- Ball comparison panel properly identifies guaranteed catches
### Technical Details
- When `modifiedCatchRate > 255`, `shakeProbability` exceeds 65536, making every `Random.nextInt(65537)` check pass
- This is Cobblemon's natural way of handling high catch rates, not just Master Ball
- Updated `formatCatchPercentage()` to show 100% when percentage >= 100.0
- Added `isGuaranteedByFormula()` helper to detect mathematical guarantees
- Server logging now notes that we cannot replicate `PokemonCatchRateEvent` modifications
### Known Limitations
- Our calculations use raw catch rates and cannot detect if other mods modify them via `PokemonCatchRateEvent`
- If you see consistent failures on displayed "guaranteed" catches, another mod may be reducing catch rates
- CobbleCuisine's 2x catch rate buff (via food) cannot be detected by our display
release
v1.2.32
1.2.327 февр. 2026 г.23Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Critical formula accuracy fixes** - now matches Cobblemon's exact shake calculation
- Changed shake probability divisor from 65536 to 65537 (Cobblemon uses `Random.nextInt(65537)`)
- Added `.roundToInt()` to shake probability calculation to match Cobblemon's integer comparison
- Formula-guaranteed catches (shakeProbability >= 65537) now correctly display 100% instead of 99.9%
- Example: Quick Ball turn 1 on high-catch-rate Pokemon like Sentret is mathematically guaranteed
- Both client-side and server-side calculations now detect formula guarantees
- Ball comparison panel properly identifies guaranteed catches
### Technical Details
- When `modifiedCatchRate > 255`, `shakeProbability` exceeds 65536, making every `Random.nextInt(65537)` check pass
- This is Cobblemon's natural way of handling high catch rates, not just Master Ball
- Updated `formatCatchPercentage()` to show 100% when percentage >= 100.0
- Added `isGuaranteedByFormula()` helper to detect mathematical guarantees
- Server logging now notes that we cannot replicate `PokemonCatchRateEvent` modifications
### Known Limitations
- Our calculations use raw catch rates and cannot detect if other mods modify them via `PokemonCatchRateEvent`
- If you see consistent failures on displayed "guaranteed" catches, another mod may be reducing catch rates
- CobbleCuisine's 2x catch rate buff (via food) cannot be detected by our display
release
v1.2.32
1.2.327 февр. 2026 г.16Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Critical formula accuracy fixes** - now matches Cobblemon's exact shake calculation
- Changed shake probability divisor from 65536 to 65537 (Cobblemon uses `Random.nextInt(65537)`)
- Added `.roundToInt()` to shake probability calculation to match Cobblemon's integer comparison
- Formula-guaranteed catches (shakeProbability >= 65537) now correctly display 100% instead of 99.9%
- Example: Quick Ball turn 1 on high-catch-rate Pokemon like Sentret is mathematically guaranteed
- Both client-side and server-side calculations now detect formula guarantees
- Ball comparison panel properly identifies guaranteed catches
### Technical Details
- When `modifiedCatchRate > 255`, `shakeProbability` exceeds 65536, making every `Random.nextInt(65537)` check pass
- This is Cobblemon's natural way of handling high catch rates, not just Master Ball
- Updated `formatCatchPercentage()` to show 100% when percentage >= 100.0
- Added `isGuaranteedByFormula()` helper to detect mathematical guarantees
- Server logging now notes that we cannot replicate `PokemonCatchRateEvent` modifications
### Known Limitations
- Our calculations use raw catch rates and cannot detect if other mods modify them via `PokemonCatchRateEvent`
- If you see consistent failures on displayed "guaranteed" catches, another mod may be reducing catch rates
- CobbleCuisine's 2x catch rate buff (via food) cannot be detected by our display
release
v1.2.32
1.2.327 февр. 2026 г.19Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Critical formula accuracy fixes** - now matches Cobblemon's exact shake calculation
- Changed shake probability divisor from 65536 to 65537 (Cobblemon uses `Random.nextInt(65537)`)
- Added `.roundToInt()` to shake probability calculation to match Cobblemon's integer comparison
- Formula-guaranteed catches (shakeProbability >= 65537) now correctly display 100% instead of 99.9%
- Example: Quick Ball turn 1 on high-catch-rate Pokemon like Sentret is mathematically guaranteed
- Both client-side and server-side calculations now detect formula guarantees
- Ball comparison panel properly identifies guaranteed catches
### Technical Details
- When `modifiedCatchRate > 255`, `shakeProbability` exceeds 65536, making every `Random.nextInt(65537)` check pass
- This is Cobblemon's natural way of handling high catch rates, not just Master Ball
- Updated `formatCatchPercentage()` to show 100% when percentage >= 100.0
- Added `isGuaranteedByFormula()` helper to detect mathematical guarantees
- Server logging now notes that we cannot replicate `PokemonCatchRateEvent` modifications
### Known Limitations
- Our calculations use raw catch rates and cannot detect if other mods modify them via `PokemonCatchRateEvent`
- If you see consistent failures on displayed "guaranteed" catches, another mod may be reducing catch rates
- CobbleCuisine's 2x catch rate buff (via food) cannot be detected by our display
release
v1.2.31
1.2.317 февр. 2026 г.21Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Replicated Cobblemon's exact capture formula** for perfect accuracy
- Fixed shake probability divisor: Cobblemon uses 65537, not 65536 (Random.nextInt(65537) generates 0-65536)
- Removed level penalty application (Cobblemon's findHighestThrowerLevel has a bug where it always returns null)
- HP component now exactly matches Cobblemon's structure with all multipliers in correct order
- Added comprehensive debug logging to compare our calculation with Cobblemon's actual values
### Technical Details
- Server-side calculation now mirrors CobblemonCaptureCalculator line-by-line
- Shake probability: `(shakeProbability / 65537)^4` instead of `(shakeProbability / 65536)^4`
- This small difference could cause up to ~0.006% discrepancy at high catch rates
release
v1.2.30
1.2.302 февр. 2026 г.164Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Root cause fix**: Removed phantom "level penalty" that we were applying but Cobblemon doesn't
- Cobblemon's `findHighestThrowerLevel()` has a bug causing it to always return null for wild battles
- This means level penalty is never actually applied by Cobblemon, but we were applying it
- Our catch rates now match Cobblemon's actual mechanics exactly
- Reverts the bandaid 99.9% cap from v1.2.29 since the root cause is fixed
release
v1.2.30
1.2.302 февр. 2026 г.17Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- **Root cause fix**: Removed phantom "level penalty" that we were applying but Cobblemon doesn't
- Cobblemon's `findHighestThrowerLevel()` has a bug causing it to always return null for wild battles
- This means level penalty is never actually applied by Cobblemon, but we were applying it
- Our catch rates now match Cobblemon's actual mechanics exactly
- Reverts the bandaid 99.9% cap from v1.2.29 since the root cause is fixed
release
v1.2.29
1.2.292 февр. 2026 г.20Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Non-guaranteed catches now always display max 99.9% to prevent misleading "100%" displays
- Previously, very high catch rates (99.95%+) could round to show 100% but still fail
- Only Master Ball and truly guaranteed catches now show 100%
release
v1.2.29
1.2.292 февр. 2026 г.20Minecraft: 1.21, 1.21.1fabric
Что нового
### Fixed
- Non-guaranteed catches now always display max 99.9% to prevent misleading "100%" displays
- Previously, very high catch rates (99.95%+) could round to show 100% but still fail
- Only Master Ball and truly guaranteed catches now show 100%
release
v1.2.28
1.2.282 февр. 2026 г.34Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- Out-of-combat HUD now matches in-combat HUD layout
- HP shown as multiplier text instead of health bar
- Status effects now displayed for wild Pokemon
- Ball condition description row added
- Dynamic box width based on content
- Guaranteed catches show "★ 100% CATCH ★" consistently
release
v1.2.28
1.2.282 февр. 2026 г.28Minecraft: 1.21, 1.21.1fabric
Что нового
### Changed
- Out-of-combat HUD now matches in-combat HUD layout
- HP shown as multiplier text instead of health bar
- Status effects now displayed for wild Pokemon
- Ball condition description row added
- Dynamic box width based on content
- Guaranteed catches show "★ 100% CATCH ★" consistently
release
v1.2.27
1.2.271 февр. 2026 г.51Minecraft: 1.21, 1.21.1fabric
Что нового
### Added
- Automated Modrinth publishing alongside CurseForge