Do you miss your legendary Pokémon feeling truly unique?
Limited Legends brings back the rarity by letting you set hard limits on how many times each Pokémon can be captured — or whether they must be fought first — ensuring that catching one feels truly special.
✨ Every feature is configurable. For example, you could use this mod only for its spawn notifications!
🛑 Per Pokémon Limits
Prevent the capturing of legendary and mythic Pokémon (or any others) once their configurable capture limit has been reached.
🚧 Per Player Limits
Limit the number of Legendaries a single player can own — either overall or per species.
🥊 Fight Before Capturing
Require players to weaken certain Pokémon in battle before they can attempt to catch them.
⬆️ Catch rate penalties: Makes catching higher level Pokémon more difficult!
📄 Customizable Config
Enable/disable any feature and apply them to any Pokémon you want!
(Default: Legendaries + Mythics)
🚫 Optional Spawn Blocking
Don’t just stop captures — block the Pokémon from spawning entirely!
📣 Optional Spawn Messages
Announce to all players whenever a limited Pokémon spawns.
🔍 Tracking Commands
/limitedlegends check <player> → See which limited Pokémon a player owns./limitedlegends find <species> → Find all players who own a specific Pokémon./limitedlegends limit → Check how many limited Pokémon you can catch./limitedlegends list → See which limited Pokémon have been caught yet.LimitedLegends.jar into your /mods folder./config/limitedlegends.json to customize your settings./limitedlegends backfill💡 Note: The Fabric version requires fabric-language-kotlin.
📂 limitedlegends.json
**"SetGlobalLimits"**
> Enable/Disable _GlobalLimitPerSpecies_ below.
**"GlobalLimitPerSpecies"**
> Only this many of each Pokémon in _LimitedPokémon_ and _SpecificLimits_ can be captured before any capture attempt fails.
**"SetLimitsPerPlayer"**
> Enable/Disable _MaxLimitedPerPlayer_ below.
**"MaxLimitedPerPlayer"**
> Only this many of each Pokémon in _LimitedPokémon_ and _SpecificLimits_ can be captured per player.
**"SetCopiesLimit"**
> Enable/Disable _MaxCopiesPerPlayer_ below.
**"MaxCopiesPerPlayer"**
> Only this many Pokémon in _LimitedPokémon_ and _SpecificLimits_ can be caught per player.
**"DisableSpawning"**
> Enable/Disable whether _LimitedPokemon_ should still spawn after their limit has been reached.
**"RequireSubjugation"**
> Prevents players from capturing Pokémon until they’ve first been weakened in battle.
**"RequireSubjugationForAll"**
> If enabled, all Pokémon need to be subjugated before catching them.
**"MinCaptureHPThreshold"**
> Pokémon must be below this HP % to be caught _(range: 0.01 = 1% and 1.0 = 100%)_
**"BonusCatchRate"**
> Bonus catch rate modifier if HP is under the threshold.
**"AllowMasterBall"**
> Lets Master Balls bypass subjugation requirements.
**"AllowOriginBall"**
> Lets Ancient Origin Balls bypass subjugation requirements.
**"AllowQuickBall"**
> Lets Quick Balls bypass subjugation requirements.
**"AllowSafariBall"**
> Lets Safari Balls bypass subjugation requirements.
**"EnableCatchRateModifiers"*
> Enables _PenaltyPerLevel_, _FlatPenalty_ and _MinCatchRate_.
**"PenaltyPerLevel"**
> Percentage by which the catch rate decreases for each level the Pokémon is higher than the player's highest one.
> Range: 0.00 - 1.00
**"FlatPenalty"**
> Percentage by which the catch rate decreases as soon as a Pokémon has a higher level than the player's highest one. _(range: 0.00 - 1.00)_
> Range: 0.00 - 1.00
**"MinCatchRate"**
> Percentage of the original catch rate that should always remain even if the level difference is greater.
> Range: 0.00 - 1.00
**"EnableCaptureMessage"**
> Whether a message should be sent to all players whenever a LimitedPokemon has been caught.
**"EnableReleaseMessage"**
> Whether a message should be sent to all players whenever a LimitedPokemon has been released.
**"EnableSpawnMessage"**
> Enable/Disable whether spawns of _LimitedPokemon_ should be broadcasted
**"LOGGER"**
> Enables/Disables log messages.
**"LimitAllPokemon"**
> If enabled, all capture restrictions apply to every Pokémon species.
**"LimitedPokemon"**
> A list of Pokémon IDs to which the above options should apply
> Format: "cobblemon:<species>", "cobblemon:<species>"
**"SpecificLimits"**
> Set limits for individual species which will override _GlobalLimitPerSpecies_
> Format: "cobblemon:<species>: <limit>", "cobblemon:<species>: <limit>"