Skip to content

Tournaments

File: config/frontier/tournaments/<id>/tournament.conf

Each .conf file in a tournament’s directory defines one tournament. The directory name becomes the tournament ID. Tournaments control bracket format, scheduling, registration, team locking, NPC autofill, and optional rating integration.

displayName = "Weekly OU Tournament"
description = "Every Saturday, open to all players. Gen 9 OU rules."
timeZone = "America/New_York"
schedule {
registrationOpens = "2026-03-14T10:00:00"
registrationCloses = "2026-03-14T13:00:00"
bracketStarts = "2026-03-14T14:00:00"
}
maxPlayers = 32
bracketType = SINGLE_ELIMINATION
seeding = ELO_BASED
format = "gen9ou"
extraClauses = []
rating {
affectsRating = true
ladderReference = "gen9ou"
}
revealFullBracket = false
noShowGraceSeconds = 300
arenas = []
bestOf {
default = 1
overrides {
quarterfinals = 3
semifinals = 3
finals = 5
}
arenaOverrides {
# finals = "grand_arena"
}
}
rosterChangeBetweenGames = false
battleMusic = ""
npcAutofill {
enabled = true
npcClass = "cobblemon:ace_trainer"
skill = 4
presetId = ""
namePool = [
"Ace Trainer Red",
"Ace Trainer Blue",
"Ace Trainer Green",
"Ace Trainer Yellow",
"Ace Trainer Silver",
"Ace Trainer Gold",
"Ace Trainer Crystal",
"Ace Trainer Ruby"
]
}
FieldTypeDefaultDescription
displayNameString"Tournament"Human-readable tournament name.
descriptionString""Description shown in UIs and announcements.
timeZoneString"UTC"IANA time zone for schedule times.
schedule.registrationOpensString""ISO-8601 datetime when registration opens.
schedule.registrationClosesString""ISO-8601 datetime when registration closes.
schedule.bracketStartsString""ISO-8601 datetime when matches begin.
maxPlayersInt128Maximum number of registered players.
bracketTypeEnumSINGLE_ELIMINATIONBracket format. SINGLE_ELIMINATION or DOUBLE_ELIMINATION.
seedingEnumRANDOMSeeding method. RANDOM, MANUAL, or ELO_BASED.
formatString""Battle format ID applied to all matches.
extraClausesList<String>[]Additional clauses on top of the format.
rating.affectsRatingBooleanfalseWhether results affect ladder ratings.
rating.ladderReferenceString""Which ladder’s rating pool to use.
revealFullBracketBooleantrueWhether the full bracket and teams are publicly viewable.
noShowGraceSecondsInt60Seconds before a no-show is declared a forfeit.
bestOf.defaultInt1Default best-of count for all rounds.
bestOf.overridesMap<String,Int>{}Per-round best-of overrides (e.g., finals = 5).
rosterChangeBetweenGamesBooleantrueAllow roster changes between games in a best-of series.
battleMusicString?nullCustom battle music resource location. Null = default music.
arenasList<String>[]Allowed arenas for the tournament. Empty = use any available arena.
bestOf.arenaOverridesMap<Int, String>{}Per-round arena overrides (e.g. finals on a specific arena). Key = round number.
npcAutofill.enabledBooleanfalseFill empty bracket slots with NPCs.
npcAutofill.npcClassString"cobblemon:standard"NPC class identifier for autofill NPCs.
npcAutofill.skillInt3AI skill level for autofill NPCs (0-5).
npcAutofill.presetIdString""Preset ID for NPC teams. Empty string = random generation.
npcAutofill.namePoolList<String>[8 default names]Pool of names randomly assigned to autofill NPCs.

NPC autofill fills empty tournament slots with AI-controlled opponents to reach a bracket-compatible player count.

FieldTypeDefaultDescription
enabledBooleanfalseWhether NPC autofill is active for this tournament.
npcClassString"cobblemon:standard"The NPC class used for rendering autofill NPCs.
skillInt3AI skill level from 0 (weakest) to 5 (strongest).
presetIdString""Preset ID for NPC teams. Leave empty for random teams.
namePoolList<String>8 default namesNames randomly assigned to NPCs. Defaults: “Youngster Joey”, “Bug Catcher Ben”, “Lass Dana”, “Ace Trainer Liam”, “Pokefan Rex”, “Ranger Kim”, “Veteran Sol”, “Black Belt Ryu”.

Controls the number of games played per match in a bracket round.

FieldTypeDefaultDescription
defaultInt1Default series length for all rounds.
overridesMap<String,Int>{}Per-round overrides. Keys are round names, values are best-of counts.

Valid best-of values are odd numbers (1, 3, 5, 7). A best-of-3 means the first player to win 2 games takes the match.

All schedule fields use ISO-8601 datetime strings, interpreted in the tournament’s configured timeZone.

FieldDescription
registrationOpensWhen players can begin registering.
registrationClosesWhen registration closes and teams are locked.
bracketStartsWhen the first round of matches begins.

The tournament automatically transitions between lifecycle states based on these times:

  • SCHEDULED -> REGISTRATION at registrationOpens.
  • REGISTRATION -> LOCKED at registrationCloses.
  • LOCKED -> ACTIVE at bracketStarts.

Controls whether tournament results affect a ladder’s rating pool.

FieldTypeDefaultDescription
affectsRatingBooleanfalseWhen true, match results update player ratings.
ladderReferenceString""The ladder ID whose rating pool is used (e.g., "gen9ou").

When affectsRating is true, ladderReference must be set to a valid ladder ID. Rating changes are calculated using the same algorithm as ranked ladder matches.