Ranking

Elo, percentage, and static ranking systems with death messages and abuse protection.

Overview

When ranking is enabled, player deaths update profile statistics (kills, deaths, ranking points). Team ranking is the average of members’ points. Strategy is selected with ranking.ranking-type.

Ranking Types

TypeClassBehavior
ELOEloRankingServiceClassic Elo-style gain/loss based on rating difference
PERCENTAGEPercentRankingServicePercentage-based point transfer
STATICStaticRankingServiceFixed winner/loser point deltas

ELO

ranking:
  ranking-type: ELO
  elo-ranking:
    elo-constants:
      - minimum-ranking: 0
        maximum-ranking: 500
        elo-correction-factory: 32
      - minimum-ranking: 500
        maximum-ranking: 1000
        elo-correction-factory: 24
      - minimum-ranking: 1000
        maximum-ranking: 99999
        elo-correction-factory: 16
    elo-divider: 400.0
    elo-exponent: 10.0
OptionDescription
elo-constantsK-factor bands by ranking range (list from low to high). maximum-ranking: -1 means open-ended upper bound in docs intent; use large values for top band
elo-correction-factoryMaximum magnitude of ranking change in that band
elo-dividerSmaller β†’ smaller rating swings
elo-exponentSmaller β†’ smaller rating swings

PERCENTAGE

ranking:
  ranking-type: PERCENTAGE
  percentage-ranking:
    percentage-ranking-change: 2.0
OptionDescription
percentage-ranking-changePercent of points transferred on kill

STATIC

ranking:
  ranking-type: STATIC
  static-ranking:
    static-winner-ranking-change: 15
    static-loser-ranking-change: 5
OptionDescription
static-winner-ranking-changePoints added to the killer
static-loser-ranking-changePoints removed from the victim

Common Settings

ranking:
  enable: true
  default-ranking: 500
  single-player-ranking-delay: 30
  disabled-worlds:
    - "spawn"
  custom-death-messages: true
  disabled-death-message-worlds:
    - "world_nether"
  multi-accounts-abuse: true
OptionDescription
enableMaster switch for ranking on death
default-rankingStarting points for new players
single-player-ranking-delayMinutes before the same victim grants ranking again (farming delay)
disabled-worldsWorlds where ranking does not change (case-sensitive)
custom-death-messagesCustom kill/death chat (and optional titles)
disabled-death-message-worldsWorlds without custom death messages
multi-accounts-abuseEnable multi-account abuse checks

Abuse Protection

SystemRole
RankingAbuseManagerTracks recent killer→victim pairs; enforces ranking delay / farm limits
MultiAccountsAbuseManagerReduces exploit potential from alternate accounts

Tune single-player-ranking-delay to match your PvP meta (higher on small populations).

Announcements

Kill/death announcements can be rate-limited:

announcement:
  limit-announcement-count: true
  maximum-announcement-count-per-entity: 2
  announcement-persistence-period: 2m
  title-announcement-for-death-and-kill: true

This reduces spam when the same entity is killed repeatedly.

Leaderboards

SurfaceDescription
/team listPaginated team ranking by average points
/team player <player>Player stats and ranking
PlaceholderAPI%mineTeams_ranking_team_<n>%, %mineTeams_ranking_player_<n>%, profile stats

A background RankingCalculationTask keeps ranking positions refreshed for tops and placeholders.

Profile Statistics

Each profile tracks:

StatDescription
RankingPoints used for tops and team averages
KillsPlayer kills
DeathsDeaths
AssistsAssists (when counted by the death listener flow)
KDADerived kill/death ratio string