Information
EternalCombat requires PacketEvents plugin to work.
You can download it from here
EternalCombat 2.0 has been tested on Minecraft versions 1.17.1 to 26.2, but it should work seamlessly on most other versions too. If you run into any compatibility issues, please let us know in the Issues tab. The plugin requires Java 21 or later, so ensure your server is ready. Ready for action? Install EternalCombat and dive in now!
How Does EternalCombat Work?
Take your server’s PvP experience to epic heights with EternalCombat 2.0! Our robust combat logging system ensures fair, heart-pounding battles that keep players on their toes. Here’s a rundown of what makes it stand out:
-
Combat Logging
No more dodging fights by logging out! Once players are in combat, they’re committed until the showdown ends. Watch it in action:
-
Support for newest features
Our plugin features cooldown and delays for tridents, spears and much more. With out of the box configurable feats.
-
Customize combat experience
Add custom effects to players in combat or death. Everything should be configurable and user-friendly:
-
Spawn Protection (Configurable)
Stop players from fleeing to safety! Block access to spawn or safe zones during combat – tweak it to fit your server’s rules. See how it works:
-
Crystal PvP support
Engage in intense Crystal PvP battles without worrying about players logging out mid-fight! EternalCombat keeps everyone in the game until the last anchor hit. Check it out:
-
Fully Customizable Combat
Tailor the combat experience to your liking with a ton of options! From disabling elytra to setting drop rates for defeated players, you’re in control. Here’s what you can tweak:Feature Description Elytra & Inventory Disable elytra or inventory access during combat. Commands Whitelist or blacklist specific commands in combat. Damage & Projectiles Customize damage causes and projectile tagging settings. Ender Pearls Add cooldowns to pearl usage in fights. Block Placement Enable or disable block placement during combat. Drop Rates Set a percentage of items dropped by defeated players. Temporary Effects Apply special effects to players in combat for added intensity. And More! Dive into the config for even more fine-tuning options!
Curious for more? Check out our quick and exciting YouTube presentation here to see EternalCombat in full swing and learn why it’s a game-changer for your server!
Permissions for EternalCombat
Control who can use EternalCombat’s powerful features with these permissions:
| Permission | Description |
|---|---|
eternalcombat.status |
Check a player’s combat status with /combatlog status <player>. |
eternalcombat.tag |
Start a fight between players using /combatlog tag <player> [player2]. |
eternalcombat.untag |
Remove a player from combat with /combatlog untag <player>. |
eternalcombat.untagall |
Remove all players from combat with /combatlog untagall. |
eternalcombat.stats |
View combat statistics with /combatlog stats. |
eternalcombat.reload |
Reload the plugin with /combatlog reload. |
eternalcombat.receiveupdates |
Receive notifications about new plugin versions on join. |
eternalcombat.bypass |
When exclude excludeAdminsFromCombat is set to true users with this permission will not be tagged |
PlaceholderAPI
EternalCombat 2.0 fully supports PlaceholderAPI, letting you integrate placeholders into other compatible plugins. Follow the PlaceholderAPI instructions to get started. Here are the available placeholders:
| Placeholder | Description |
|---|---|
%eternalcombat_opponent% |
Returns the name of the player you’re fighting. |
%eternalcombat_opponent_health% |
Returns the opponent’s health in 00.00 format. |
%eternalcombat_remaining_seconds% |
Returns seconds remaining until the player exits combat. |
%eternalcombat_remaining_millis% |
Returns milliseconds remaining until the player exits combat. |
If a player isn’t in combat, placeholders return an empty string. If combat wasn’t triggered by another player, opponent-related placeholders will also return empty.
Developer API
1. Add repository:
With Gradle:
maven {
url = uri("https://repo.eternalcode.pl/releases")
}
With Maven:
<repository>
<id>eternalcode-reposilite-releases</id>
<name>EternalCode Repository</name>
<url>https://repo.eternalcode.pl/releases</url>
</repository>
2. Add dependency:
With Gradle:
compileOnly("com.eternalcode:eternalcombat-api:2.5.2")
With Maven:
<dependency>
<groupId>com.eternalcode</groupId>
<artifactId>eternalcombat-api</artifactId>
<version>2.5.2</version>
<scope>provided</scope>
</dependency>
Contributing
We’d love your help to make EternalCombat even better! Check out our contributing guide for details on how to get involved and our code of conduct.
Reporting Issues
Found a bug? Report it in the Issues tab. Please include as much detail as possible, like your Minecraft and plugin versions, along with any error messages or logs. Ready to transform your server’s combat experience? Download EternalCombat 2.0 now and let the battles begin!
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
|
R
2.5.2
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
|
R
2.5.1
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
|
R
2.5.0
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
|
R
2.4.1
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
|
R
2.4.0
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
|
R
v2.3.0
|
1d ago | 1 | |||
|
R
v2.2.0
|
1d ago | 1 | |||
|
R
v2.1.1
|
1d ago | 1 | |||
|
R
2.1.0
|
1d ago | 1 | |||
|
R
v2.0.1
|
1d ago | 1 | |||
|
R
v2.0.0
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 |
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
# ✨ Improvements & New Features
- Added **pearl stasis prevention** for Ender Pearls during combat.
- Added configurable **Ender Pearl cooldowns**, delays and an option to extend the combat tag after throwing a pearl.
- Added configurable **Riptide restrictions**, cooldowns and combat tag extension.
- Added support for the new **Spear Lunge** mechanic with configurable cooldowns.
- Added the
{OPPONENT}placeholder to combat notifications and tag messages. - Added an option to keep the combat tag active below a configurable void height to prevent escaping combat through the void.
- Added an optional **sign editing blocker during combat**, useful for preventing sign based Ender Pearl exploits.
- Added native **GriefPrevention support** for restricted regions and PvP protected claims.
# 🐛 Fixes
- Fixed
EntityMountEventcompatibility on modern Paper versions. - Fixed incorrect combat handling on **Folia** in some damage events.
- Improved Folia detection and scheduler handling.
# 🧩 Compatibility & Other Notable Changes
- Added and verified support for **Minecraft 26.2**.
- Minecraft **26.3** should also work once PacketEvents adds support for it.
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
- add spear cooldown and lunge support based on new api handling without building against it due to support for older versions
Signed-off-by: Michał Wojtas <wojtas.michal90@gmail.com>
- Resolve AI review. Add gif to readme
Signed-off-by: Michał Wojtas <wojtas.michal90@gmail.com>
- Optimise SpearLungeController
Signed-off-by: Michał Wojtas <wojtas.michal90@gmail.com>
- Update eternalcombat-plugin/src/main/java/com/eternalcode/combat/fight/spear/SpearLungeController.java
Co-authored-by: Jakub Kędziora <77227023+Jakubk15@users.noreply.github.com>
- Update eternalcombat-api/src/main/java/com/eternalcode/combat/fight/spear/SpearService.java
Co-authored-by: Jakub Kędziora <77227023+Jakubk15@users.noreply.github.com>
Signed-off-by: Michał Wojtas <wojtas.michal90@gmail.com>
Co-authored-by: Jakub Kędziora <77227023+Jakubk15@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
- Keep combat tag active below void height to prevent evasion
- Respect ignored worlds for void combat
- Add opponent placeholder to combat tag chat message
- Pass opponent UUID when tagging for combat
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
- Add combat sign editing blocker
- Fix.
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
- Fix: Resolve EntityMountEvent registration failure on modern Paper
Newer Paper builds (e.g. 26.1.2) removed org.spigotmc.event.entity.EntityMountEvent, causing KnockbackRegionController registration to fail and region knockback protection to be disabled.
Resolve EntityMountEvent at runtime (checking Bukkit, Paper, and Spigot packages) and register it reflectively while preserving the 1.19.3 compile target for compatibility.
- Optimize dynamic mount event handling
Co-authored-by: Martin Sulikowski <vluckyyy.biznes@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
