FAQ & Troubleshooting
Frequently asked questions and solutions for common issues.
Find answers to common questions and solutions for issues you may encounter.
Basic Information
What is CobbleRanked?
A competitive ranked battle system for Cobblemon servers with:
- ELO-based matchmaking (Pokemon Showdown or Glicko-2)
- Singles/Doubles/Triples battle formats
- Season system with automatic rewards
- Pokemon/move/ability/item blacklists
- Label limits (e.g., max 1 legendary per team)
- Cross-server support via Redis (optional)
- Battle music and camera system
What are the requirements?
| Requirement | Version |
|---|---|
| Minecraft | 1.21.1 |
| Fabric Loader | 0.17.2+ |
| Cobblemon | 1.7.1+ |
| GashiLibs | 1.0.6+ |
| MailLib | 1.0.5+ |
| Fabric Language Kotlin | 1.13.6+ |
What database options are available?
| Database | Use Case |
|---|---|
| SQLite | Single server, simple setup (default) |
| MySQL | Cross-server, large player bases |
| MongoDB | NoSQL alternative, sharded setups |
Cross-server requires MySQL or MongoDB (not SQLite).
Configuration
How do I change the language?
Edit config/cobbleranked/config.yaml:
language: ja-jp # en-us or ja-jp
Then run /rankedadmin reload.
What are the battle format defaults?
| Format | Team Size | Level Cap | Turn Timer | Match Duration |
|---|---|---|---|---|
| Singles | 3v3 | 100 | 90s | 15 minutes |
| Doubles | 4v4 | 50 | 120s | 20 minutes |
| Triples | 6v6 | 50 | 150s | 25 minutes |
Note: Triples is disabled by default in the preset. Enable it in your season preset if needed.
All formats have 60s team selection and 30s lead selection timers.
Arena Setup
How do I set up an arena?
Use these commands in-game:
/rankedadmin setArena <name> pos1 # First player spawn
/rankedadmin setArena <name> pos2 # Second player spawn
/rankedadmin setArena <name> exit # Exit teleport location
/rankedadmin setArena <name> spectator # Optional spectator position
Check arena status with /rankedadmin arena status.
"No arenas available" error
Solutions:
- Verify arena exists:
/rankedadmin arena status - Enable the arena:
/rankedadmin arena enable <name> - Ensure all positions are set (pos1, pos2, exit)
- Check world name matches exactly (case-sensitive)
Blacklist & Validation
How do I blacklist Pokemon forms?
Use hyphen (-) as the separator, not colon (:):
blacklist:
pokemon:
- "Mewtwo" # Bans all Mewtwo forms
- "Kyurem-Black" # Only Black Kyurem
- "Zygarde-Complete" # Only Complete form
- "Necrozma-Ultra" # Only Ultra Necrozma
v2.0.21+ Behavior:
- Species-only entries (e.g.,
Landorus) ban ALL forms - Form-specific entries (e.g.,
Landorus-Therian) ban ONLY that form
How do I blacklist items?
Direct items or item tags:
blacklist:
items:
- "cobblemon:choice_band" # Specific item
- "minecraft:diamond" # Vanilla item
- "#cobblemon:mega_stones" # Item tag (starts with #)
- "#cobblemon:berries" # All berries
"Team is invalid for this format" error
Common causes:
| Validation Error | Meaning |
|---|---|
| BLACKLISTED_SPECIES | Pokemon species is banned |
| BLACKLISTED_MOVE | Move not allowed |
| BLACKLISTED_ABILITY | Ability not allowed |
| BLACKLISTED_ITEM | Held item not allowed |
| LABEL_LIMIT_EXCEEDED | Too many legendaries/mythicals |
| DUPLICATE_SPECIES | Species Clause violation |
| DUPLICATE_ITEM | Item Clause violation |
Solutions:
- Check blacklist in season preset
- Verify label limits (default: max 1 legendary)
- No duplicate Pokemon species (Species Clause)
- No duplicate held items (Item Clause)
Matchmaking
How does matchmaking work?
- Player joins queue with
/ranked - System searches within ELO range (default ±200)
- If no match found, range expands every 30s (+50 ELO)
- Last 3 recent opponents avoided (expires after 5 minutes)
- When matched, ready check begins (17s to accept)
- Team selection begins (60s)
- Lead selection (30s), then battle starts
Queue not finding matches
Solutions:
- ELO range expands over time - wait longer
- Recent opponent avoidance may delay matches
- With 4+ players in queue, avoidance relaxes after 2 minutes
- Check if ELO enforcement is too strict in config
ELO & Rankings
How does the ELO system work?
Pokemon Showdown System (Default):
- Starting ELO: 1000
- Floor ELO: 0 (no minimum)
- New players get K-factor 35 for first 10 games (industry standard)
| ELO Range | K-Factor |
|---|---|
| 0-1100 | 30 |
| 1101-1300 | 25 |
| 1301-1600 | 20 |
| 1601-2000 | 16 |
| 2001+ | 12 |
Higher K-factor = bigger rating changes per match.
Win Streak Bonus: Players on 3+ win streaks get +3 K-factor, 5+ wins get +5 K-factor.
What are the rank tiers?
| Tier | ELO Range |
|---|---|
| Poke Ball | 0-1299 |
| Great Ball | 1300-1499 |
| Ultra Ball | 1500-1699 |
| Master Ball | 1700-1899 |
| Beast Ball | 1900-2099 |
| Cherish Ball | 2100+ |
ELO didn't change after battle
Possible causes:
- Daily ELO gain limit reached (default: 200)
- Battle didn’t complete (timeout/disconnect)
- Casual battle (no ELO change)
- Very small change due to large ELO difference
Seasons & Rewards
What happens when a season ends?
- Final rankings calculated
- Rewards distributed via MailLib
- Leaderboard archived (top 100 by default)
- ELO reset (hard or soft reset, configurable)
- New season begins automatically
Season didn't end automatically
Solutions:
- Check season schedule timezone (IANA format)
- Verify end date/time in season.yaml
- Manual rotation:
/rankedadmin season rotate - Check server logs for errors
How do I claim rewards?
/mailbox
Rewards are sent via MailLib when the season ends.
Database Issues
SQLite errors
Solutions:
- Check
config/cobbleranked/directory exists - Verify file permissions on
data.db - Ensure disk space is available
- Backup and delete corrupt DB to regenerate
MySQL connection failed
Solutions:
- Verify MySQL is running
- Check host, port, database, username, password
- Test connection:
mysql -h host -u user -p database - Verify firewall allows port 3306
- Check character set:
utf8mb4_unicode_ci - Increase pool size if “max pool reached” error
MongoDB connection issues
Solutions:
- Verify connection string format
- Check MongoDB daemon is running
- Verify auth credentials if using authentication
- MongoDB driver is shaded - no conflicts with other mods
Cross-Server Issues
Redis not connecting
Solutions:
- Verify Redis is running:
redis-cli ping - Check host, port, password in config.yaml
- Verify firewall allows port 6379
- Test with password:
redis-cli -h host -p port -a password ping
Players not matching across servers
Checklist:
- All servers use same database (MySQL/MongoDB)
crossServer.enabled: trueon all servers- Redis connected on all servers
- Each server has unique
serverId - One server has empty
battleServer(handles battles)
Players not teleported back after battle
This issue was fixed in v2.0.21. Players are now correctly teleported back to their original position after ranked battles (single-server mode).
If still experiencing issues:
- Verify
exitPositionis set in your arena config - Run
/rankedadmin arena statusto check arena configuration - Ensure no other plugins are interfering with teleportation
- Check server logs for teleport-related errors
Commands Reference
Player commands
| Command | Permission | Description |
|---|---|---|
/ranked | cobbleranked.player.use | Open ranked GUI |
/casual | cobbleranked.player.casual.use | Open casual GUI |
/casual missions | cobbleranked.player.casual.use | Open missions GUI |
/battlecamera toggle | cobbleranked.player.use | Toggle battle camera |
/battlecamera status | cobbleranked.player.use | Check camera status |
Admin commands
Arena Management:
/rankedadmin setArena <name> <pos1|pos2|exit|spectator>/rankedadmin arena status- View all arenas/rankedadmin arena enable/disable <name>/rankedadmin setArena <name> setcenter [radius]- Set arena center with radius/rankedadmin arena reset- Clear all positions/rankedadmin teleportArena <name>- Teleport to arena/rankedadmin setexit- Set global exit location
ELO Management:
/rankedadmin setelo <player> <format> <elo>/rankedadmin addelo <amount> <player> <format>/rankedadmin removeelo <amount> <player> <format>
Season Management:
/rankedadmin season info- Current season details/rankedadmin season rotate- End season manually/rankedadmin queue clear- Clear all queues
Data Management:
/rankedadmin reload- Reload all configs/rankedadmin usage export [season]- Export Pokemon usage/rankedadmin leaderboard export [season] [limit]/rankedadmin migrate ...- v1 to v2 migration
Performance
Lag during battles
Solutions:
- Disable debug logging:
debug.enabled: false - Reduce battle music complexity
- Check server TPS
- Increase MySQL connection pool if needed
- Archive old seasons to reduce database size
Getting Help
If your issue isn’t listed above:
- Collect
logs/latest.log - Export relevant config files
- Note exact steps to reproduce
- Ask in Discord #feedback