Products Docs Help Store Discord

Main Configuration

Basic server settings, database, and cross-server configuration.

Core server configuration for CobbleRanked. Advanced settings are organized in separate pages.

Configuration Files

CobbleRanked uses multiple YAML files in config/cobbleranked/:

FilePurpose
config.yamlCore settings: language, database, cross-server, debug
elo.yamlRating system and rank tiers → ELO Settings
battle.yamlTimers, penalties, rewards → Battle Settings
matchmaking.yamlRecent opponent avoidance → Matchmaking Settings
season.yamlSeason schedule and reset behavior → Season Settings
sounds.yamlAll sound effects → Sounds
arenas.yamlBattle arena positions → Arenas
restrictions.yamlPlayer action restrictions → Restrictions
rewards.yamlSeason rewards → Rewards
missions.yamlDaily/weekly missions → Missions
integrations/luckperms.yamlLuckPerms integration → LuckPerms
api.yamlWeb API settings → API
season_presets/*.ymlFormat rules per season → Battle Formats

Season Presets

Format-specific settings (team size, level cap, matchmaking rules, blacklists) are configured in season presets instead of the main config files. This keeps all format settings in one place.

# season_presets/default.yml
singles:
  enabled: true
  teamSize: 3
  selectCount: 3
  levelCap: 100
  # ... all format settings here

Language Settings

# config.yaml
language: "en-us"
ValueLanguage
en-usEnglish (default)
ja-jpJapanese

📝 You can add ANY language! Create a custom language file in config/cobbleranked/language/ (e.g., fr-Fr.json5, zh-CN.json5) and set the language code to match. See Languages Configuration for details.

Reload with /rankedadmin reload after changing.


Discord Webhook Notifications

Send notifications to a Discord channel via Webhook when players rank up, when matches end, or when a season ends. Works on both pure-Fabric and Arclight servers (plain HTTP POST, no Bukkit dependency).

# config.yaml
discord:
  enabled: false
  webhookUrl: ""                 # Discord → Channel Settings → Integrations → Webhooks → New Webhook
  username: "CobbleRanked"       # Bot display name
  events:
    rankUp: true                 # Notify when a player ranks up (tier change, up only)
    seasonEnd: true              # Notify when a season ends
    matchResultRanked: true      # Notify on ranked match results (win/loss/draw)
    matchResultCasual: false     # Notify on casual match results
EventTrigger
rankUpA player’s tier goes up (e.g. Poké Ball → Great Ball). Down-ranks are silent.
seasonEndThe active season ends and rewards are distributed.
matchResultRankedA ranked match ends (victory / defeat / draw). Includes ELO change.
matchResultCasualA casual match ends. Off by default to avoid spam.

Create a webhook in Discord: Channel Settings → Integrations → Webhooks → New Webhook, then paste the URL into webhookUrl.

On cross-server setups, only the battle server sends match-result and season-end notifications (the event originates there), so you will not get duplicate posts.


Database Settings

Configure data storage in config.yaml.

TypeUse Case
sqliteSingle server (default, zero config)
mysqlCross-server setups
mongodbCross-server with MongoDB

SQLite (Default)

# config.yaml
database:
  type: "sqlite"
  sqlite:
    path: "config/cobbleranked/data.db"

MySQL

# config.yaml
database:
  type: "mysql"
  mysql:
    host: "localhost"
    port: 3306
    database: "cobbleranked"
    username: "root"
    password: ""
    pool:
      maxSize: 10
      minIdle: 2

MongoDB

# config.yaml
database:
  type: "mongodb"
  mongodb:
    connectionString: "mongodb://localhost:27017"
    database: "cobbleranked"

📝 See Database Configuration for detailed setup and migration guides.


Cross-Server Settings

For multi-server setups with shared rankings:

# config.yaml
crossServer:
  enabled: false
  serverId: "server1"
  battleServer: ""

  # Allow players on battle server to join queue directly (NOT RECOMMENDED)
  # Default: false - battle servers should only handle matched battles
  allowQueueOnBattleServer: false

  redis:
    host: "localhost"
    port: 6379
    password: ""
    database: 0
    useSsl: false

  timing:
    matchFoundDelaySeconds: 5
    battleStartDelaySeconds: 10
    playerArrivalTimeoutSeconds: 30

Battle Server Queue Behavior

SettingDefaultDescription
allowQueueOnBattleServerfalseAllow players on battle server to join queue

When disabled (default), players on the battle server cannot join the queue. This is recommended because the battle server is dedicated to handling matched battles from lobby servers.

⚠️ Warning: Enabling allowQueueOnBattleServer can cause unexpected behavior. Only enable if you understand the implications.

See Cross-Server Setup for detailed guide.


Timezone & Caching

# config.yaml
timezone: "Asia/Tokyo"          # Global timezone (IANA). Used for daily limits, missions, seasons.

leaderboard:
  cacheTtlMinutes: 15            # How long leaderboard results are cached
  profileCacheTtlMinutes: 1440   # Offline-player skull profile cache (24h)
  statsCacheTtlMinutes: 5        # Per-format player stats cache
SettingDefaultDescription
timezoneserver defaultGlobal timezone for daily resets, missions, and seasons
leaderboard.cacheTtlMinutes15Leaderboard cache duration
leaderboard.profileCacheTtlMinutes1440Offline-player skull profile cache (avoids re-fetching skins)
leaderboard.statsCacheTtlMinutes5Per-format player stats cache

Background music is configured in sounds.yaml.


Debug Settings

Enable for troubleshooting:

# config.yaml
debug:
  enabled: false
  logBattleEvents: false
  logMatchmaking: false
  logGuiInteractions: false
  logMusicEvents: false
SettingDescription
enabledMaster switch for debug mode
logBattleEventsLog battle start, end, victor
logMatchmakingLog queue joins, matches found
logGuiInteractionsLog button clicks, GUI opens
logMusicEventsLog battle music triggers

⚠️ Debug mode generates verbose logs. Disable in production.


Advanced Configuration Pages

SettingDocumentation
ELO Rating SystemELO Configuration
Matchmaking RulesMatchmaking Configuration
Battle Timers & PenaltiesBattle Configuration
Season ScheduleSeason Configuration
Match AnnouncementsAnnouncements Configuration
Pokemon/Move RestrictionsBlacklist Configuration
Player Action RestrictionsRestrictions Configuration
Season End RewardsRewards Configuration
Daily/Weekly MissionsMissions Configuration
Battle ArenasArena Configuration
GUI CustomizationGUI Configuration
Language FilesLanguages Configuration
Sound EffectsSounds Configuration
Web APIAPI Configuration
LuckPerms IntegrationLuckPerms

See Also

  • Getting Started - Installation and quick start
  • FAQ - Common questions and troubleshooting