Skip to main content

Elo Module

Features​

  • Send configurable messages on ELO change
  • Set starting ELO and per-kill adjustments
  • Define rank thresholds with names and display styles
  • Support BASE and USCF_CHESS ELO calculators with customizable multipliers and K-factors

Calculator Descriptions​

Base Calculator​

  • Formula: eloChange = elo-per-kill * multiplier
  • Use difference-multipliers map under calculator.base-settings keyed by ELO difference brackets.
  • Default multipliers:
Elo differenceMultiplier
-5002.0
-3001.5
-2001.25
-1001.1
-501.05
01.0
500.95
1000.9
2000.75
3000.5

USCF Chess Calculator​

  • Calculates expected score: expectedScore = 1 / (1 + 10^(difference / 400)), where difference = loserElo - winnerElo.
  • Determine K-factor based on winner's current ELO:
    • ELO < 2100 β†’ K = 32
    • 2100 ≀ ELO < 2400 β†’ K = 24
    • ELO β‰₯ 2400 β†’ K = 16
  • ELO change: eloChange = max(1, round(K * (eloPerKill - expectedScore))), ensuring at least 1 point gained.

Configuration Reference​

KeyTypeDefaultDescription
enabledbooleantrueEnable or disable the ELO module
send-elo-change-messagebooleantrueSend chat messages on ELO changes
starting-elonumber1000Initial ELO assigned to new players
elo-per-killnumber10Base ELO awarded per kill
ranksobject[][]List of rank definitions (elo, identifier, name)
calculator.calculator-type"BASE" | "USCF_CHESS"BASEELO calculation method
calculator.base-settings.difference-multipliersobject (number:number){0: 1.0...}Multipliers for BASE calculator based on ELO differences
calculator.uscf-settingsobjectUSCF_CHESS settings (K-factors thresholds)

Example​

elo.yml
enabled: true
send-elo-change-message: true
starting-elo: 1000
elo-per-kill: 10
ranks:
- elo: 0
identifier: unranked
name: "&7Unranked"
- elo: 1200
identifier: silver
name: "&fSilver"
- elo: 1500
identifier: silverI
name: "&fSilver II"
calculator:
calculator-type: BASE
base-settings:
difference-multipliers:
-500: -2.0
-300: 1.5
-200: 1.25
-100: 1.1
-50: 1.05
0: 1.0
50: 0.95
100: 0.9
200: 0.75
300: 0.5