PvPIndex Battle
Official open free ELO platform with advanced battle system. Includes Sword PvP, Crystal PvP, Sumo and much more
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
PvPIndex Battle
ELO ratings is a competitive PvP plugin for Paper, Folia, Purpur, Spigot, BungeeCord, and Velocity servers. It adds a full ELO ratings with per-mode ELO ratings, persistent global leaderboards, battle replays, and a moderation suite - all synced to ELO ratings 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
---
Features
- Folia compatible - Crystal, Sword, Pot, NoDebuff, Soup, Axe, Mace, Boxing, Sumo, UHC - each with independent ELO ladders and separate leaderboards - Folia compatible - fully configurable 54-slot GUI with per-mode ELO, countdowns, and automatic arena teleportation - Folia compatible - `/battle challenge <player> [mode]` works standalone or routes through a Velocity or BungeeCord proxy - Folia compatible - proxy broadcasts all online players so `/battle challenge <TAB>` shows names from every backend server - Folia compatible - frame-by-frame recording, reviewable in-game with `/pvpmod replay <id>` - Folia compatible - procedural, schematic, and world-copy generation strategies; four bundled schematics included - Folia compatible - player reports, local bans, federated network-wide bans, real-time spectating - Folia compatible - ELO, rank, win/loss, queue state, and active mode placeholders for scoreboards and tab lists - Folia compatible via `messages.yml` - Folia compatible - battles are cryptographically signed before submission; the API rejects anything tampered with - Folia compatible - K=32 trust-weighted implementation published under MIT at Folia compatible - Folia compatible - runs on Folia, Paper, Purpur, Spigot, and Bukkit (1.21+)
---
Requirements
| 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 |
---
Installation
Paper / Folia / Purpur / Spigot
1. Drop `PvPIndexBattles-<version>.jar` into `plugins/`. 2. Start the server, configs are generated automatically. 3. Stop the server, then add your API key to `plugins/PvPIndexBattles/config.yml`:
```yaml api: api_key: "your-api-key-here"
server: id: "my-server" ```
4. Restart and run `/pvpindex` to confirm everything loaded correctly.
Velocity / BungeeCord *(optional)*
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
---
Commands
`/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 |
---
PlaceholderAPI
| 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 |
---
Configuration
```yaml
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
---
Links
- Issue tracker - Issue tracker - Issue tracker - %%MD1%% - Issue tracker - %%MD2%% - Issue tracker - %%MD3%% - Issue tracker - %%MD4%%
---
License
The ELO validator is published under MIT. See LICENSE for the plugin itself.