Skip to content

Main Config

File: config/frontier/config.conf

The main config controls queue behavior, match settings, anti-boost protection, replay recording, sound effects, and post-match teleportation. Here’s what the generated file looks like:

queue {
defaultQueueTimeoutSeconds = 600
maxRatingExpansionCap = 500.0
maxRatingExpansionPerSecond = 10.0
tickInterval = 20
}
match {
declineQueueCooldownSeconds = 30
maxMatchDurationTicks = 36000
teamPreviewSeconds = 30
turnTimerInitial = 150
turnTimerMax = 180
turnTimerRegenPerTurn = 10
}
antiBoost {
blockSameIp = false
match1Multiplier = 1.0
match2Multiplier = 0.5
match3PlusMultiplier = 0.1
windowHours = 24
}
replay {
directory = replays
enabled = true
}
arenaReturnToOrigin = true
fallbackSpawn {
world = "minecraft:overworld"
x = 0.0
y = 64.0
z = 0.0
}
debug = false

Controls how the matchmaking queue processes and expands rating search ranges over time.

FieldTypeDefaultDescription
tickIntervalInt20How often (in ticks) the queue processes matchmaking. 20 = once per second.
maxRatingExpansionPerSecondDouble10.0How many rating points the search range expands per second of waiting.
maxRatingExpansionCapDouble500.0Maximum total rating range expansion. At cap, a 1500-rated player can match anyone from 1000-2000.
defaultQueueTimeoutSecondsInt600Seconds before a player is automatically removed from the queue.

Controls the team preview timer, turn timer, and match duration limits.

FieldTypeDefaultDescription
teamPreviewSecondsInt30Duration of the team preview phase before battle.
turnTimerInitialInt150Starting turn timer in seconds.
turnTimerRegenPerTurnInt10Seconds added back to the timer after each turn.
turnTimerMaxInt180Maximum the turn timer can reach with regen.
declineQueueCooldownSecondsInt30Cooldown applied when a player declines a found match.
maxMatchDurationTicksLong36000Maximum match duration in ticks (36000 = 30 minutes). 0 = no limit.

Prevents rating farming by punishing repeated matchups between the same players.

FieldTypeDefaultDescription
windowHoursInt24Time window for tracking repeated matchups.
match1MultiplierDouble1.0Rating change multiplier for the first match against an opponent.
match2MultiplierDouble0.5Multiplier for the second match in the window.
match3PlusMultiplierDouble0.1Multiplier for the third+ match.
blockSameIpBooleanfalseBlock matchmaking between players on the same IP address.

Here’s how the multipliers work in practice: if a win would normally give +25 rating, the second match against the same opponent only gives +12.5, and the third gives +2.5. The window resets after windowHours.

FieldTypeDefaultDescription
enabledBooleantrueWhether to record match replays.
directoryString"replays"Directory to store replay files, relative to the server root.

Controls where players go after a match ends.

FieldTypeDefaultDescription
arenaReturnToOriginBooleantrueTeleport players back to their original location after a match.
fallbackSpawn.worldString"minecraft:overworld"Fallback world if the original location is unavailable.
fallbackSpawn.x/y/zDouble0.0, 64.0, 0.0Fallback coordinates.

Sound effects for every event. Set any sound to an empty string ("") to disable it.

sounds {
volume = 1
pitch = 1
queue {
join = "minecraft:block.note_block.chime"
leave = "minecraft:block.note_block.bass"
}
match {
found = "minecraft:block.note_block.bell"
battleStart = "minecraft:entity.ender_dragon.growl"
victory = "minecraft:ui.toast.challenge_complete"
defeat = "minecraft:entity.wither.death"
arenaTeleport = "minecraft:entity.enderman.teleport"
}
preview {
confirm = "minecraft:block.note_block.pling"
select = "minecraft:ui.button.click"
opponentReady = "minecraft:block.note_block.bit"
}
challenge {
received = "minecraft:entity.experience_orb.pickup"
accepted = "minecraft:block.note_block.chime"
declined = "minecraft:block.note_block.bass"
}
misc {
milestoneAchieved = "minecraft:entity.player.levelup"
turnTimerWarning = "minecraft:block.note_block.hat"
turnTimerExpired = "minecraft:entity.elder_guardian.curse"
seasonEnd = "minecraft:ui.toast.challenge_complete"
}
}
FieldTypeDefaultDescription
volumeFloat1.0Master volume multiplier for all sounds (0.0 = silent, 1.0 = full).
pitchFloat1.0Pitch multiplier for all sounds (0.5 = lower, 2.0 = higher).
FieldDefaultPlays When
joinminecraft:block.note_block.chimePlayer joins the matchmaking queue.
leaveminecraft:block.note_block.bassPlayer leaves the queue.
FieldDefaultPlays When
foundminecraft:block.note_block.bellA match is found.
battleStartminecraft:entity.ender_dragon.growlThe battle begins.
victoryminecraft:ui.toast.challenge_completePlayer wins a match.
defeatminecraft:entity.wither.deathPlayer loses a match.
arenaTeleportminecraft:entity.enderman.teleportPlayer is teleported to the arena.
FieldDefaultPlays When
confirmminecraft:block.note_block.plingPlayer confirms team selection.
selectminecraft:ui.button.clickPlayer selects/deselects a Pokemon in preview.
opponentReadyminecraft:block.note_block.bitOpponent has confirmed their team.
FieldDefaultPlays When
receivedminecraft:entity.experience_orb.pickupPlayer receives a challenge invitation.
acceptedminecraft:block.note_block.chimeA challenge is accepted.
declinedminecraft:block.note_block.bassA challenge is declined.
FieldDefaultPlays When
milestoneAchievedminecraft:entity.player.levelupPlayer reaches a season milestone.
turnTimerWarningminecraft:block.note_block.hatTurn timer warning (60s, 30s, 10s).
turnTimerExpiredminecraft:entity.elder_guardian.curseTurn timer runs out.
seasonEndminecraft:ui.toast.challenge_completeA season ends (played to all online players).
FieldTypeDefaultDescription
debugBooleanfalseVerbose debug logging. Only useful for development or troubleshooting.