PvPIndex Battles is a competitive PvP plugin for Paper, Folia, Purpur, Spigot, BungeeCord, and Velocity servers. It adds a full 1v1 duel and ranked matchmaking system with per-mode ELO ratings, persistent global leaderboards, battle replays, and a moderation suite - all synced to pvpindex.com so your players' rankings persist across the entire network.
Supported game modes: Crystal PvP · Sword PvP · Pot PvP · NoDebuff · Soup PvP · Axe PvP · Mace PvP · Boxing · Sumo · UHC
/battle challenge <player> [mode] works standalone or routes through a Velocity or BungeeCord proxy/battle challenge <TAB> shows names from every backend server/pvpmod replay <id>messages.yml| Requirement | Version |
|---|---|
| Java | 21+ (25+ for Paper API 26.1.x) |
| Paper / Folia / Purpur / Spigot | 1.21.x or 1.21.4+ (API 26.1.x) |
| Velocity or BungeeCord (optional) | Velocity 3.x / BungeeCord 1.21+ |
| PlaceholderAPI (optional) | 2.11+ |
| PvPIndex API key | Free at pvpindex.com |
PvPIndexBattles-<version>.jar into plugins/.plugins/PvPIndexBattles/config.yml:api:
api_key: "your-api-key-here"
server:
id: "my-server"
/pvpindex to confirm everything loaded correctly.Drop PvPIndexBattles-velocity-<version>.jar into your proxy plugins/ folder and configure plugins/pvpindex-battles/config.properties with the same API key and shared secret as your backend servers.
→ Full proxy setup guide: docs.pvpindex.com/server_owner/proxy-setup
/battle Players| Command | Description |
|---|---|
/battle | Open the matchmaking mode selection GUI |
/battle challenge <player> [mode] | Send a duel challenge |
/battle accept <id> | Accept a challenge |
/battle decline <id> | Decline a challenge |
/battle leave | Leave the queue or forfeit an active battle |
/pvpindex Admins| Command | Permission | Description |
|---|---|---|
/pvpindex reload | pvpindex.reload | Reload plugin config |
/pvpindex submissions | pvpindex.admin | View pending battle submissions |
/pvpindex sync | pvpindex.admin | Retry unsubmitted battles |
/pvpindex retryfailed | pvpindex.admin | Retry failed API submissions |
/pvpmod Moderation| Command | Permission | Description |
|---|---|---|
/pvpmod watch <player> | pvpindex.mod | Spectate a live battle |
/pvpmod replay <id> | pvpindex.mod | Play back a recorded battle |
/pvpmod report <player> <reason> | pvpindex.mod.report | Report a player |
/pvpmod ban <player> <duration> <reason> | pvpindex.mod.ban | Ban a player from battles |
/pvpmod unban <player> | pvpindex.mod.ban | Unban a player |
| Placeholder | Returns |
|---|---|
%pvpindex_elo% | Overall ELO rating |
%pvpindex_elo_<mode>% | ELO for a specific mode |
%pvpindex_rank% | Global ladder position |
%pvpindex_wins% | Session wins |
%pvpindex_losses% | Session losses |
%pvpindex_kd% | Win/loss ratio |
%pvpindex_in_battle% | true / false |
%pvpindex_queued% | true / false |
%pvpindex_queued_mode% | Current queue mode or none |
%pvpindex_battle_type% | Display name of the active mode |
# plugins/PvPIndexBattles/config.yml
api:
api_key: ""
base_url: "https://api.pvpindex.com/api"
server:
id: "my-server"
require_signature: false # Recommended: set to true in production
debug: false
arena:
world_prefix: "pvpindex_arena"
cleanup_delay_ticks: 100
queue:
max_wait_seconds: 120
→ Full reference: docs.pvpindex.com/server_owner/configuration
The ELO validator is published under MIT. See LICENSE for the plugin itself.

Official open free ELO platform with advanced battle system. Includes Sword PvP, Crystal PvP, Sumo and much more