REAN COMBAT
Stop players from rage-quitting their way out of fights.

→ Join my Discord for support ←
Stop players from rage-quitting their way out of fights.
→ Join my Discord for support ←
Overview
Combat Log is a lightweight anti-combat-logging plugin for Spigot, Paper, and Purpur servers. When two players hit each other, both get "tagged" into combat for a configurable duration. While tagged, players see a live countdown timer, can't run commands you've blocked (like /tpa, /home, /spawn, /warp), and get punished if they disconnect before the timer runs out. Designed for PvP servers, factions, KitPvP, survival, SMPs, and any gamemode where players try to escape losing fights by ALT+F4'ing.
The plugin is fully configurable, supports PlaceholderAPI for displaying combat status in scoreboards and tab lists, and runs per-world so you can keep combat tagging in your PvP arenas while leaving spawn and lobby worlds untouched. Every message shown to players can be rewritten, recolored with hex codes, and localized into any language.
Features
- Live Combat Timer - A real-time countdown is shown to tagged players via the action bar, chat, or both. The timer updates every second and clears the moment combat ends, so players always know exactly how long they have to stay alive.
- Action Bar & Chat Output - Choose where combat notifications appear. Use the action bar for a clean, non-intrusive timer that doesn't spam chat, or use chat for verbose messaging, or enable both for maximum visibility during fights.
- Command Blocking - Block any command while a player is tagged - /tpa, /home, /spawn, /warp, /back, /fly, /vanish, anything you want. Each blocked command can have its own custom denial message so players know why their teleport just failed.
- Punish on Logout - If a tagged player disconnects mid-fight, they're killed on the spot. Their inventory drops where they logged off, their attacker gets credit for the kill, and the death is announced so the whole server knows who tried to combat log. No more cheap escapes.
- Fully Customizable Messages - Every notification is rewriteable: tagged, untagged, blocked command, logout kill, opponent name, time remaining. Full support for color codes, hex colors (&#RRGGBB), and PlaceholderAPI placeholders inside messages.
- Per-World Toggle - Enable or disable Combat Log on a world-by-world basis. Keep combat tagging active in your PvP worlds while letting players freely teleport in survival, creative, or lobby worlds.
- PlaceholderAPI Support - Display combat status, remaining seconds, opponent name, and lifetime stats anywhere placeholders work - scoreboards, tab list, holograms, NPC dialogues, chat formats.
- Bypass Permissions - Staff and trusted players can be exempted from combat tagging entirely, or just from the command-blocking portion, using granular permission nodes.
- Lightweight & Async-Safe - Built for performance. No database, no heavy dependencies, no TPS impact even on large servers. Works out of the box with no setup required.
- Lifetime Statistics - Tracks total combat tags and logout kills per player, accessible via PlaceholderAPI for leaderboards and player profiles.
How It Works
When Player A hits Player B (melee, ranged, or projectile), both players get combat tagged for the configured duration (default: 20 seconds). Each new hit refreshes the timer. While tagged:
- A countdown appears on their action bar and/or in chat.
- Any command in your blocked list is denied with a custom message.
- If they log out, they die where they stand. Their inventory drops normally, and the attacker is credited with the kill.
Compatibility
- Server software: Folia, Spigot, Paper, Purpur, and forks
- Minecraft versions: 1.17 - 1.21+
- Java: 21
- Soft dependencies: PlaceholderAPI (optional, for placeholders)
Screenshots
Decimal Actionbar when a player is tagged in combat?
Normal format Actionbar when a player is tagged in combat?
Commands
| Command | Description | Permission |
| /combat | Shows plugin info and version. | reancombat.use |
| /combat reload | Reloads config and message files. | reancombat.admin |
| /combat tag <player> | Force-tags a player into combat. | reancombat.admin |
| /combat untag <player> | Removes a player's combat tag. | reancombat.admin |
Permissions
| Permission | Description | Default |
| reancombat.use | Access to the base command. | true |
| reancombat.admin | Full access to admin subcommands and reload. | op |
| reancombat.bypass | Never gets tagged into combat. | op |
| reancombat.bypass.blocks | Use blocked commands while tagged. | op |
PlaceholderAPI
| Placeholder | Description | Output |
| %reancombat_tagged% | Whether the player is currently in combat. | true / false |
| %reancombat_status% | Combat status as a custom message. | In Combat / Safe |
| %reancombat_time_left% | Seconds remaining on combat tag. | 18 |
| %reancombat_time_left_formatted% | Combat time remaining, formatted. | 00:18 |
| %reancombat_opponent% | Last player who tagged this player. | Notch |
| %reancombat_total_tags% | Total times the player has been combat tagged. | 47 |
| %reancombat_logout_kills% | Total times the player has been killed for logging. | 3 |
Configuration
Everything is configurable through clean YAML files:
- config.yml - Combat duration, enabled worlds, blocked commands list, output mode (chat/actionbar/both), logout punishment toggle.
- messages.yml - Every player-facing message, with color code and hex support.
Why Combat Log?
- No bloat. Does one thing - combat tagging - and does it well. No half-finished features bolted on.
- No setup pain. Drop the jar in /plugins, restart, done. Default config works for most servers.
- No performance hit. No database, no async file I/O during combat, no scheduled tasks running when nobody's fighting.
- Actively maintained. Bug reports get fixed. Custom feature requests are welcome on Discord.
