AhxerVersus is the most complete room-based PvP/PvE arena plugin for Paper 1.21+. Players pick a map, kit and template from a polished menu, invite friends with a room code, and fight in fully isolated arenas that build and clean themselves automatically.
Integrates with
Everything is menu-driven and editable. Real in-game screenshots below, plus GUIs rendered straight from the plugin's menus and config.
/versus opens a clean hub: create a room, browse public rooms, join with a code, or check your stats. If you are already in a room, it opens your room menu instead.
Choose the map (Random by default), visibility, inventory mode and equipment, then go with ready-made Templates or full Custom rules. Options marked “creation only” lock once the room exists.
No two templates play the same: 1v1 Duel, Free-for-all, Bow PvP, Trident PvP, Crystal PvP, Netherite PvP, and Mobs Medium / Hard. Templates set the kit and extras — the map is always the player's choice.
Rendered from the plugin's templates — hover an item for its tooltip.
Kits are defined entirely in the config with a content preview. Ships with Diamante, Arquero, Tridente and Netherite (each with a fishing rod and XP bottles) plus the originals — or pick Your equipment to enter with what you're wearing. Inventories are snapshotted and restored, never lost.
Custom mode exposes every match rule — PvP/PvE, revives, fall damage, regen, hunger, spawn protection, time and dimensions — plus extra functions: golden & notch apples, healing potions, ender pearls, end crystals + obsidian, experience bottles, Always Critical and No Regeneration.
Enable mobs, set the spawn interval and mode, and pick from a curated type list. Creepers and withers never damage the map, drowned spawn with a trident, and a hard cap of 15 mobs keeps every room smooth.
Matches played and wins are stored per player and shown in a personal stats menu and a centered top-5 leaderboard (configurable up to 7). Winner rewards are configurable console commands with %winner%.
Menu clicks, denied actions, kit and template picks, room join/leave, deaths, the countdown, the GO!, the winner fanfare and the end-of-match bell. A master switch mutes the plugin, and each of the 12 events can be changed or disabled — invalid names are reported once and simply stay silent.
sounds: enabled: true click: { enabled: true, sound: UI_BUTTON_CLICK, volume: 0.6, pitch: 1.0 } deny: { enabled: true, sound: BLOCK_NOTE_BLOCK_BASS, volume: 0.9, pitch: 0.6 } select: { enabled: true, sound: ENTITY_EXPERIENCE_ORB_PICKUP, volume: 0.7, pitch: 1.3 } win: { enabled: true, sound: UI_TOAST_CHALLENGE_COMPLETE, volume: 1.0, pitch: 1.0 } countdown: { enabled: true, sound: BLOCK_NOTE_BLOCK_PLING, volume: 1.0, pitch: 1.0 } go: { enabled: true, sound: ENTITY_PLAYER_LEVELUP, volume: 1.0, pitch: 1.4 }
Every arena is built in its own world, 512 blocks apart by default, wrapped in an invisible impassable barrier. After each match it wipes placed blocks, leftover crystals, dropped items, projectiles and XP orbs. Import your own .schem builds and configure spawns entirely in game — a shape-friendly barrier only replaces passable blocks, so your build keeps its exact shape.
Everything below ships in a single JAR — no add-ons, no upsells.
| Feature | AhxerVersus |
|---|---|
| Menu-driven room creation (also full commands) | ✓ |
| Public & private rooms with shareable codes | ✓ |
| 8 ready-to-play templates, no two alike | ✓ |
| Config-defined kits with content preview | ✓ |
| “Your equipment” mode — enter with your own gear | ✓ |
| Custom match rules (PvP/PvE, revives, regen, hunger…) | ✓ |
| Extra functions (pearls, crystals, criticals, no-regen…) | ✓ |
| 19 self-clearing potion effects + Night Vision toggle | ✓ |
| Wave-based PvE mobs with a 15-mob cap | ✓ |
| Isolated, self-cleaning arenas (512-block spacing) | ✓ |
| Schematic maps from .schem, configured in game | ✓ |
| Inventory snapshot & restore (crash-safe) | ✓ |
| Command blocking inside rooms (with whitelist) | ✓ |
| Statistics, top-5 leaderboard & winner rewards | ✓ |
| Full sound feedback — 12 configurable events | ✓ |
| English & Spanish, every text & menu title editable | ✓ |
| Auto file migration with .bak backups on update | ✓ |
With PlaceholderAPI installed, the plugin exposes non-clashing placeholders under the ahxerversus identifier.
%ahxerversus_played%Matches played%ahxerversus_wins%Total wins%ahxerversus_losses%Total losses%ahxerversus_winrate%Win rate value%ahxerversus_winrate_formatted%Win rate, formatted%ahxerversus_in_room%Whether the player is in a room%ahxerversus_room_code%Current room codepartidas · victorias · derrotas · porcentajeSpanish aliases also workBehaviour lives in config.yml; every text and menu title lives in messages/<lang>.yml. A few real sections:
kits: presets: diamante: display: "&b&lDiamante" icon: DIAMOND_CHESTPLATE armor: chestplate: "DIAMOND_CHESTPLATE;PROTECTION:2" items: - "DIAMOND_SWORD;SHARPNESS:2" - "BOW;POWER:2" - FISHING_ROD - "EXPERIENCE_BOTTLE:32"
room-defaults: max-players: 2 # cycles 1..10 (creation only) combat: PVP # PVP | PVE respawn-max: 10 # revive cycles 0..10 start-countdown: 5 # 0, 3, 5, 10 spawn-protection: 3 # seconds world: name: versus cell-spacing: 512 # blocks between arena cells
commands: block-in-room: true allowed-in-room: # only these work inside a room - msg - w
sounds: enabled: true click: { enabled: true, sound: UI_BUTTON_CLICK, volume: 0.6, pitch: 1.0 } deny: { enabled: true, sound: BLOCK_NOTE_BLOCK_BASS, volume: 0.9, pitch: 0.6 } select: { enabled: true, sound: ENTITY_EXPERIENCE_ORB_PICKUP, volume: 0.7, pitch: 1.3 } win: { enabled: true, sound: UI_TOAST_CHALLENGE_COMPLETE, volume: 1.0, pitch: 1.0 } countdown: { enabled: true, sound: BLOCK_NOTE_BLOCK_PLING, volume: 1.0, pitch: 1.0 } go: { enabled: true, sound: ENTITY_PLAYER_LEVELUP, volume: 1.0, pitch: 1.4 }
One command with subcommands and a full admin toolset. Aliases: /vs, /arena.
| Command | Description | Permission |
|---|---|---|
| /versus | Open the main menu (or your room menu) | ahxerversus.use |
| /versus leave | Leave your room and restore your state | ahxerversus.leave |
| /versus start | Start the match (room owner only) | ahxerversus.use |
| /versus stats / list | Open your statistics or the public rooms list | ahxerversus.use |
| /versus <player> | Open the menu for another player | ahxerversus.others |
| /versus reload | Reload config, messages and schematics | ahxerversus.admin |
| /versus admin <list|info|end|close|tp|kick|cleanup> | Admin toolset for active rooms | ahxerversus.admin |
| /versus schematic <…> | Manage .schem maps (sync, edit, area, active…) | ahxerversus.schematic* |
| /versus help | Show the command list | ahxerversus.use |
| Permission | Default | Grants |
|---|---|---|
| ahxerversus.use | Everyone | Use /versus and open menus |
| ahxerversus.create / .join / .leave | Everyone | Create, join and leave rooms |
| ahxerversus.admin | OP | Reload and the admin toolset |
| ahxerversus.others | OP | Open the menu for other players |
| ahxerversus.schematic | OP | Manage schematics (if required in config) |
| ahxerversus.bypass.maxrooms | OP | Ignore the max-rooms limit |
| ahxerversus.map.<name> | varies | Per-map access (only if that map requires it) |
*Schematic management needs no permission by default; set map.schematic.manage-requires-permission: true to require it. Inside a room every command is blocked except /versus and a whitelist (default /msg, /w); staff bypass this.
.schem maps; PlaceholderAPI exposes the statistics placeholders. The built-in maps and everything else work without them.config.yml under sounds: — change the Bukkit sound, volume and pitch, disable any event, or flip the master switch to mute everything. Invalid names are reported once and stay silent..bak backup is written first. Player data is never touched.Drop in the JAR and restart — the world, config, language files and self-checks set themselves up. Then let your players create rooms, pick templates and fight in clean, isolated arenas.