Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
Comparator 1.0.0
First public release. Comparator rolls a stack of event and minigame systems into one plugin, so you don't have to run a dozen separate ones to put on a match. Built for Paper/Folia 1.21 on Java 21, and it runs properly on Folia's region threads (no global scheduler calls anywhere).
How it works
Your event runs through a five-stage state machine: lobby, pre-game, in-game, paused, and post-game. PvP, stat tracking, and the live event systems turn on and off automatically depending on the stage, and starting or ending a game fires reward triggers for you.
| State | PvP | Stats | Event systems |
|---|---|---|---|
| Lobby | no | no | no |
| Pre-game | no | no | yes |
| In-game | yes | yes | yes |
| Paused | no | no | yes |
| Post-game | no | yes | no |
What's in it
Events and teams - create, start, pause, resume, and stop events. Manage teams with display names and live membership, plus per-player profiles. A default event is set up for you on startup.
Hearts (lifesteal) — active and banked heart balances that actually change max health, a configurable steal-per-kill, and player-to-player transfers.
Combat and objectives — eliminations and revives with logged reasons, safe and no-build zones, and KOTH-style capture scoring. Capsule spawning samples the terrain in the background to spread players across the map, avoid water, and keep everyone spaced out.
Tournaments — single-elimination and round-robin brackets with seeding, result reporting, and live standings, all hooked into the dashboard and scoreboard.
Stats and rewards — async, batched tracking for 11 stats (kills, deaths, damage dealt and taken, healing, blocks placed and broken, items crafted, distance, captures, rewards earned) with leaderboards. Rewards are defined in rewards.yml and can run commands, give items, change health, or show titles on state changes.
Interfaces — a 7-page dashboard GUI, a state-aware sidebar scoreboard, and a lightweight web dashboard that's token-gated and runs on the built-in JDK HTTP server (no extra dependencies).
Storage and integrations — async batched SQLite for stats, audit log, and analytics, a PlaceholderAPI expansion, and bStats metrics.
There's also a public API so other plugins can soft-depend on Comparator, and /comparator reload reloads config and services without a restart.
World events
Six built-in events you can trigger live or from the dashboard:
| ID | Effect |
|---|---|
supply-drop |
Drops contested loot for players to fight over |
blood-moon |
Forces night and opens a combat window |
border-collapse |
Shrinks the border to force late-game fights |
meteor-storm |
Rains explosive impacts across the arena |
sudden-death |
Shrinks the border to a small radius over 30s |
resource-rush |
Time-boxed resource surge |
Commands
Everything runs under /comparator (alias /cmp), and all of it supports tab-completion for player names, enums, and live IDs.
| Command | What it does |
|---|---|
status |
Overview: state, active event, teams, zones, tournaments, persistence |
reload |
Reload config and reloadable services |
dashboard |
Open the GUI |
event <create|start|pause|resume|stop|list> |
Manage the event lifecycle |
state <state> |
Force a state transition |
team <create|join|leave|list> |
Manage teams and assignments |
capsule <plan|dispatch> [radius] |
Plan or dispatch capsule spawns |
eliminate <player> [reason] |
Eliminate a player |
revive <player> |
Revive a player |
hearts <balance|give|take|set|bank|withdraw|transfer> |
Manage the heart economy |
zone <create|list> |
Create or list zones (create <id> <type> <radius>) |
worldevent <trigger|list> |
Trigger or list world events |
tournament <create|entrant|seed|result|standings|list> |
Run tournaments |
stats [statistic] |
Show a top-10 leaderboard |
Permissions
comparator.admin covers everything and comparator.dashboard only opens the GUI. Both default to op.
Config
Settings live in config.yml. A few defaults worth knowing: the web dashboard runs on port 8087, capsule spawning uses a 1600 default radius, and there are sections for the SQLite database, lifesteal hearts (starting/min/max and steal-per-kill), zone capture timing, the scoreboard, and integration/metrics toggles.
Build
Paper/Folia 1.21, Java 21. Built with Gradle 9.3 and Shadow, producing Comparator-0.1.0.jar. SQLite is shaded but not relocated (it needs that for native libs), bStats is relocated, and PlaceholderAPI is compileOnly.


