CelestCombat Pro
CelestCombat Pro is a highly optimized, feature-rich, and enterprise-grade combat management plugin for Minecraft servers specializing in PvP environments. Fully compatible with Paper, Purpur, and Folia, it provides comprehensive combat logging prevention, forcefields, anti-glitch systems, newbie protections, and kill rewards without sacrificing server performance.
Crediting original: https://github.com/NighterDevelopment/CelestCombat

📖 Table of Contents
- 🚀 Core Features
- 📋 Requirements & Installation
- 💻 Commands & Permissions
- ⚙️ Quick-Start Configuration Guide
- 🛠️ Developer API
- 🤝 Contributing & Support
- 📄 License
🚀 Core Features
⚔️ Combat Tagging & Anti-Log System
- Auto-Tagging: Automatically tags players in combat when they deal or receive damage.
- Combat Flight Control: Disables flight and Elytra usage immediately upon entering combat to prevent players from fleeing.
- Command Blocking: Prevent players from escaping PvP using teleportation or utility commands. Supports both blacklist and whitelist command modes.
- Combat Logout Punishment: Kills players who log out during combat, drops their items, executes custom server commands (like global chat announcements), and awards attacker rewards.
- Exempt Admin Actions: Optionally bypasses combat tagging during administrative kicks to prevent false logging punishments.
🛡️ Forcefield Border & Area Protection
- WorldGuard Safezones: Tagged players are pushed back with customizable force when they attempt to enter WorldGuard safe zones. Features a beautiful stained-glass forcefield visualizer (default:
RED_STAINED_GLASS). - GriefPrevention Claims: Pushes combatants out of active GriefPrevention claims to prevent "claim-hopping" during fights. Renders a distinct visual boundary (default:
BLUE_STAINED_GLASS). - UXM Claims: Comprehensive control over player entry, combat, item restrictions (Chorus Fruit, Pearls, Totems), and command blocking inside UXM claims. Supports separate rule profiles for Admin, Player, and Public claims.
🧬 Ender Pearl & Trident Mechanics
- Ender Pearl Glitch Prevention: Employs advanced physics checks to prevent players from getting stuck in blocks, doing micro-teleports, passing through doors/gates, and glitching through walls or tight spaces.
- Pearl & Trident Cooldowns: Enforces custom cooldown timers (global or combat-only) with world-specific toggles.
- Combat Refresh: Option to refresh/renew the combat timer when an Ender Pearl or Trident lands.
- Trident Restrictions: Option to ban trident usage entirely in configured worlds (e.g., Nether).
🎁 Player Progression & Rewards
- Newbie Protection: Grants temporary PvP and mob damage protection to new players. Features customizable bossbar/actionbar countdown displays and removes protection early if they deal damage to others.
- Kill Rewards: Triggers custom commands (e.g., giving keys/currencies) upon player kills with global and same-player farming cooldowns to prevent exploitation.
- Death Animations: Plays stunning visual effects (lightning strikes and fire particles) when players die.
📋 Requirements & Installation
Requirements
- Minecraft Version: 1.21 - 26.X
- Server Software: Paper, Purpur, Folia
- Java Version: Java 21+
Installation
- Download the latest release from Modrinth.
- Place the
.jarfile in your server'spluginsfolder. - Restart your server.
- Configure the settings in
plugins/CelestCombat/config.ymland language files inplugins/CelestCombat/language/. - Reload the configuration with
/cc reload.
💻 Commands & Permissions
Commands
| Command | Aliases | Permission | Description |
|---|---|---|---|
/cc help |
/combat, /celestcombat |
celestcombat.command.use |
Displays command help menu |
/cc reload |
/combat, /celestcombat |
celestcombat.command.use |
Reloads configs, messages, and dynamic event priorities |
/cc tag <player1> [player2] |
/combat, /celestcombat |
celestcombat.command.use |
Manually tags player(s) in combat |
/cc removetag <player/world/all> |
/combat, /celestcombat |
celestcombat.command.use |
Instantly removes combat tag(s) |
Permissions
| Permission | Default | Description |
|---|---|---|
celestcombat.command.use |
OP | Access to all plugin commands |
celestcombat.update.notify |
OP | Receive update notifications on login |
celestcombat.bypass.tag |
false | Completely bypasses combat tagging |
⚙️ Quick-Start Configuration Guide
Below is a breakdown of key sections in the config.yml to help you customize the plugin.
Adjusting Event Priorities
If another plugin overrides command blocking or damage handling, adjust the listener priority:
event_priorities:
command_blocking: "LOW" # Options: LOWEST, LOW, NORMAL, HIGH, HIGHEST, MONITOR
combat_damage: "HIGH"
teleportation: "HIGH"
Configuring Combat Punishment
Set up what happens when a player logs out during a PvP engagement:
combat:
duration: 20s
combat_logout:
enabled: true
kill_player: true
reward_attacker: true
punishment_commands:
- "broadcast &c%player% &7logged out during combat!"
attacker_reward_commands:
- "broadcast &a%player% &7killed &c%victim% &7(Combat Logout)"
Forcefields & safe zones
Adjust the forcefield visual and push back power:
safezone_protection:
enabled: true
barrier_material: "RED_STAINED_GLASS"
barrier_detection_radius: 5
push_back_force: 0.6
🛠️ Developer API
CelestCombat Pro provides a robust API for external plugins to integrate with its combat systems.
Accessing the API
Ensure you import com.shyamstudio.celestCombatPro.api.CelestCombatAPI and hook into it:
import com.shyamstudio.celestCombatPro.api.CelestCombatAPI;
import com.shyamstudio.celestCombatPro.api.CombatAPI;
import org.bukkit.entity.Player;
public class MyPluginIntegration {
public void checkPlayerCombat(Player player) {
CombatAPI api = CelestCombatAPI.getCombatAPI();
if (api != null && api.isInCombat(player)) {
player.sendMessage("You are currently in combat!");
// Get the remaining combat time
int secondsLeft = api.getRemainingCombatTime(player);
// Get their current opponent
Player opponent = api.getCombatOpponent(player);
}
}
}
📦 Building
To build CelestCombat Pro locally:
git clone https://github.com/ShyamStudios/CelestCombat-Pro.git
cd CelestCombat-Pro
./gradlew build
The compiled JAR will be saved in build/libs/.
🤝 Contributing & Support
- Issues & Bug Reports: GitHub Issues
- Discord Community: Join our Discord
📊 Statistics
📄 License
This project is licensed under the CC BY-NC-SA 4.0 License - see the https://github.com/ShyamStudios/CelestCombat-Pro/blob/main/LICENSE file for details.
All Versions
+ Add Version- CelestCombat-Pro 2.0.0: Folia & Canvas Stability Update**
- Fixes**
- Fixed the crash on Folia/Canvas where quitting while in combat threw "IllegalStateException: Dispatching command async" whenever punishment_commands or attacker_reward_commands were set. Commands now run on the global scheduler, in order, once each.
- Fixed kill rewards sometimes being given twice because of a cooldown race.
- Fixed the "last attacker" tracking. It was broken because two copies of the listener each kept their own map.
- Fixed a possible duplicate combat expiry message.
- Fixed a few NPEs: inventory click with empty cursor, UXM claims teleport with no destination, and combat countdown during a state change.
- Fixed riptide rollback trying to compare locations across worlds.
- Fixed cooldown and newbie protection data files being written by two saves at once.
- Folia / Canvas**
- Player stuff now runs on the player's own thread: messages, titles, action bars, sounds, boss bars, inventory, flight, velocity, teleports, kicks.
- Block changes, particles and barrier blocks run in the correct region.
- Async tasks only do file and network work now. They don't touch the game.
- WorldGuard and GriefPrevention barrier code, the newbie protection timer and both countdown displays are region safe.
- Performance**
- One shared timer handles combat and cooldown countdowns instead of separate tasks.
- Removed the countdown task that started every time someone threw a trident.
- Command blocking rules are compiled once, no config reads on every command.
- Death animation settings, combat logout settings and messages are cached.
- GriefPrevention barrier scan doesn't allocate a Location per block anymore.
- Update check runs once an hour instead of on every player join.
- Other**
- All plugin tasks stop on disable. Nothing keeps running after a reload.
- Combat, pearl, trident and barrier state gets cleaned on quit, death, reload and shutdown.
- No config or message changes needed. Drop in and go.
- Paper, Leaf, Folia, Canvas. MC 1.21.11, Java 21 and 25.
feat: major performance improvements
fix: WorldGuard detection and API hook issues
feat: added combat logout punishment & reward commands
fix: item restrictions not applying correctly
fix: language folder generation on first load
chore: added missing messages & improved config handling
- Improved overall plugin performance and efficiency
- Fixed several reported bugs
- Corrected duplicate Ender Pearl cooldown message issue
- Added configuration caching system to improve performance
- Added UXM Claims integration with runtime detection (no compile dependency)
- Added combat claim entry prevention
- Added PvP protection inside claims
- Added owner and trusted combat exceptions in claims
- Added teleport prevention into claims during combat
- Added per-world claim protection settings
- Added intelligent TTL caching for claim lookups
- Added advanced ender pearl glitch protection system
- Added micro-teleport exploit prevention
- Added barrier / bedrock / portal pearl protection
- Added tight-space teleport safety checks
- Added separate ender pearl cooldown system
- Added configurable event priority system
- Added dynamic event handler registration
- Added EventPriorityManager for caching and validating priorities
- Added /celestcombat eventpriority command to view current priorities
- Added Elytra combat restrictions (equip, shift-click, and glide prevention)
- Added automatic Elytra removal when combat starts
- Added CombatAPI method disconnectPlayerSafely(Player player)
- Added /celestcombat safeDisconnect <player> admin command
Fix:
- Fixed performance issues caused by repeated config lookups
- Fixed EssentialsX GUI command bypass
- Fixed Elytra being usable during combat
- Fixed ender pearl block-stuck teleport edge cases
- Fixed potential claim lookup performance issues
Improve:
- Improved plugin compatibility with other plugins using configurable event priorities
- Improved combat and teleport handling stability
- Improved item restriction handling during combat
- Improved combat start handling logic
- Improved overall plugin performance during player movement checks
## 🛠 Fixes & Improvements
### 1. Fixed Flying Detection Bug
Players who are knocked back or launched during combat will no longer be incorrectly pulled back to the ground.
The plugin now properly distinguishes between:
- Knockback or combat launch** (allowed)
- Intentional flight attempts** (blocked)
This prevents false positives during PvP.
### 2. Removed Language Folder System
The previous multi-file language folder system has been **completely removed**.
It has been replaced with a **simpler and cleaner configuration**:
- A single
messages.ymlfile now controls all messages.
This makes editing and managing messages much easier.
### 3. Fully Configurable Message System
All plugin messages are now highly customizable.
Supported features:
- Chat messages**
- Titles**
- Subtitles**
- Action bars**
- Sounds**
Additional capabilities:
- Hex color support:**
&#RRGGBB - Legacy color codes:**
&c,&a, etc. - Placeholders:**
%player%,%time%, and more - Per-message enable/disable options**
## ⚡ Summary
This update improves **PvP accuracy**, simplifies **configuration**, and provides a **powerful new customizable messaging system**.
## Overview
This update introduces major performance improvements to the WorldGuard safe-zone protection system and fixes issues with combat command blocking.
The focus of this release is **reducing CPU usage during player movement and combat interactions**, making the plugin significantly more efficient on servers with many players.
Expected performance improvement: **up to 90% reduction in CPU usage for safezone barrier detection.**
## Performance Improvements
### WorldGuard Safezone Barrier Optimization
The safezone detection and barrier visualization system has been heavily optimized.
- Estimated CPU usage improvement**
Before
~1.60% server thread usage
After
~0.15–0.20% server thread usage
These improvements are most noticeable on PvP servers with many players in combat near protected regions.
### Reduced Vertical Scanning
Barrier detection previously scanned a large vertical range.
The scan height is now limited to **4 blocks relative to the player**.
Benefits:
- Reduces location checks significantly
- Improves safezone border detection performance
- Lowers CPU usage during movement events
### Barrier Update Early Exit
Barrier updates now stop immediately if the barrier layout has not changed.
This prevents unnecessary operations such as:
- recalculating barrier locations
- sending redundant block updates
- iterating over barrier collections
### Location Object Reuse
Location objects are now reused during scanning instead of creating new instances.
Previously each update could create **hundreds of Location objects**.
This change removes a major source of memory allocation and reduces garbage collection pressure.
### Optimized HashSet Usage
Barrier tracking collections have been optimized to avoid unnecessary HashSet creation.
Collections are now created only when required.
### Packed Cache Keys
Safezone caching now uses **bit-packed long keys** instead of string concatenation.
Previous cache format:
world:x:y:zNew cache format:
long packedLocationKeyBenefits:
- eliminates string allocations
- improves map lookup speed
- significantly reduces memory overhead
## Bug Fixes
### Combat Command Blocking
Commands defined in the combat blacklist were not always blocked due to case-sensitive comparisons.
Command matching is now **fully case-insensitive**.
Example commands that are now correctly blocked:
/tpa/TPA/Tpa/spawn/SPAWN
Wildcard patterns continue to function as expected.
Example configuration:
``
blocked_commands:
- tpa
- spawn
- team*
``## Technical Improvements
### Object Allocation Reduction
The update removes hundreds of unnecessary object allocations during player movement events.
Key improvements include:
- removing Location cloning inside loops
- eliminating string-based cache keys
- optimizing HashSet usage
- reducing safezone scanning volume
## Expected Server Impact
Example scenario: **50 players moving in combat near safezones**
Before update
~1.60% CPU usage
After update
~0.15–0.20% CPU usage
This results in smoother gameplay and reduced server load during PvP.
## Recommendation
This update is strongly recommended for servers running practice PvP, combat-focused gameplay, or large player counts.
Updating will significantly improve movement handling and safezone barrier performance.
Combat timers are now cleared for both killer and victim on death
Silent removal prevents unnecessary combat messages
Handles indirect combat-related deaths correctly
fix: add PlaceholderAPI support
Added PlaceholderAPI repository and dependency
Implemented 10 combat and cooldown placeholders
Registered expansion with proper error handling
Added PlaceholderAPI as a soft dependency
fix: optimize combat system and clean up code
Optimized combat map cleanup logic
Reduced unnecessary iterations and memory usage
Removed unused fields and deprecated API usage
Simplified combat cause detection
- Celest Combat Pro Update**
After months, a new update is finally out.
> - Fixed an issue where players could use Wind Charge + W to enter the safe zone while in combat
>
> - Fixed safe zone protection so players inside it do not take damage from any explosives (minecarts, TNT, etc.)
Combat and safe zones now work properly.
Please report bugs with clear steps or video.
Note:
We’ve received official permission from the original author of CelestCombat, Nighterr, to create an improved version using its base code.
Special thanks to Nighterr for developing such a great combat plugin. From here on, ShyamStudio will continue its development and take it further.*