The complete PvP combat core — tagging, combat log, safezones, pearl rules, kill rewards, killstreaks & stats.
Paper & Folia 1.21 – 26.x • SQLite / MySQL • PlaceholderAPI • Developer API
Paper & Folia 1.21 – 26.x • SQLite / MySQL • PlaceholderAPI • Developer API
Why PulseCombat?
Most combat plugins give you a tag and a timer. PulseCombat is a full PvP core built for Donut-style, survival, hardcore and crystal PvP servers — with the anti-abuse layer, database stats and Folia-native scheduling that serious servers actually need. Drop it in, tweak two values, done.
⚔ Combat Tagging
• Tags on melee, projectiles, splash potions, TNT and end crystals (explosions are attributed to whoever punched or placed the crystal — most combat plugins can't do this)
• Action bar countdown, optional boss bar with live progress, optional title on tag
• Configurable duration, refresh-on-hit, opponent tracking, tag sounds
• Untag on kill / death / enemy logout — all configurable
• NPC (Citizens) and creative/spectator exemptions, per-world whitelist/blacklist
• Kill on quit with inventory drop + kill credit to the opponent
• Lightning effect, server broadcast, extra console punish-commands
• Optional spawn teleport on next login
• Admin-kick and server-restart exemptions — no false punishments on /stop
🛡 Safezone Protection
• Combat-tagged players are knocked back from safe areas with a red glass barrier preview they can actually see
• WorldGuard pvp-deny regions + extra region ids
• GriefPrevention claims (with allow-own-claim option) and Towny towns
• Pearls can't be thrown into safezones while tagged
• Cooldown with the vanilla item cooldown overlay on the pearl itself
• Disabled worlds & WorldGuard regions, arena combat pearl-lock per world
• Cross-world teleport blocking (global or per throw-world)
• Console (or as-killer) commands on valid PvP kills with %killer% %victim% %streak%
• Stacking killstreak tiers — every reached tier pays out
• Same-IP kill-farm block, killer↔victim pair cooldown, victim cooldown, daily caps
• Same-target spam guard: notify / soft (no rewards) / hard (blocks the damage itself)
• Kill effects: heal-on-kill hearts, cosmetic lightning, sounds, killstreak milestone broadcasts
• Kills, deaths, KDR, current & best killstreak, total combat time
• HikariCP connection pooling + WAL journal — no "database is locked" errors, ever
• /pulsecombat stats & /pulsecombat top in-game, full leaderboard placeholders for holograms & Topper
• Fast Crystals — per-player toggle; swing at a crystal and it detonates instantly, no ghost crystals, with correct kill attribution (respects safezones)
• Ghost Totem Fix — catches the same-tick offhand-swap death, consumes the totem and revives with vanilla effects + configurable revive cooldown
• Newbie Protection — PvP grace period for brand-new players, removed if they attack first
• Region Item Rules — cuboid allow/deny lists per area (pearls, gapples, wind charges, …)
• Custom Death Messages — MiniMessage templates per damage cause, PvP template with killer health, optional combat-only mode
• Command & Item Blocking — blacklist/whitelist commands with wildcards, block elytra/chorus/anything while tagged, flight disable with auto-restore
Built on Paper's region schedulers from day one — not patched in later. Every player interaction runs on the correct region thread. One jar for Paper and Folia.
Placeholders (requires PlaceholderAPI)
Code:
%pulsecombat_in_combat% true/false
%pulsecombat_combat_remaining% seconds left on the tag
%pulsecombat_kills% total PvP kills
%pulsecombat_deaths% total deaths
%pulsecombat_killstreak% current killstreak
%pulsecombat_best_killstreak% best killstreak
%pulsecombat_kdr% kill/death ratio
%pulsecombat_combat_time% total combat time (seconds)
%pulsecombat_kills_<player>% kills of another player
%pulsecombat_top_kills_<1-25>_name% leaderboard name
%pulsecombat_top_kills_<1-25>_value% leaderboard kills
%pulsecombat_top_name_<1-25>% Topper-style name
%pulsecombat_top_value_<1-25>% Topper-style value
Commands
Code:
/pulsecombat stats [player] PvP stats pulsecombat.stats
/pulsecombat top [kills|streak] leaderboards pulsecombat.stats
/fastercrystal (/togglecrystalbreak) toggle fast crystals pulsecombat.fastcrystal
/pulsecombat tag <player> [opponent] tag players pulsecombat.admin
/pulsecombat removetag <p|all|world> clear tags pulsecombat.admin
/pulsecombat reload reload config pulsecombat.admin
Developer API
Java:
PulseCombatAPI api = Bukkit.getServicesManager()
.getRegistration(PulseCombatAPI.class).getProvider();
api.isInCombat(uuid); api.tag(player, opponent); api.isSafezone(loc);
api.loadStatsAsync(uuid, stats -> ...);
// Events: CombatTagEvent (cancellable), CombatEndEvent, PlayerCombatLogEvent (cancellable)
Support
Report bugs and get support on Discord: https://discord.gg/ZTQ8dtvnVz
Every heading above maps 1:1 to a commented section of config.yml — most setups only change the tag duration and the command list.
