ModernCombat | Knockback, Hit Detection, Hit Boxes, Block Hitting, Bow Boosting, Pots and more! icon

ModernCombat | Knockback, Hit Detection, Hit Boxes, Block Hitting, Bow Boosting, Pots and more! -----

Return the old school kb, bow boosting, hit detection or make your own! Custom Combat!



[​IMG]
ModernCombat (formerly ModernKnockback) is a full combat-control plugin for modern Minecraft servers. It lets you rebuild classic PvP on new versions, tune knockback profiles in detail, replace inconsistent vanilla combat behaviors, improve hit registration, optimize projectiles and pearls, and shape the entire PvP feel of your server without forcing players onto outdated clients.
And many more things!

[​IMG]
  • Requires Java 17+.​
  • Requires ProtocolLib. The plugin will disable itself without it.​
  • Works on modern Spigot / Paper / Folia servers. The current source build hard-requires Minecraft 1.19+.​
  • WorldGuard, PlaceholderAPI and Floodgate are optional integrations.​
  • ViaRewind is not recommended with this plugin, because ModernCombat is built to bring legacy combat behavior to modern clients and servers directly.​
  • Block-hitting uses the modern item component system and therefore requires a sufficiently new server version (see setup section below).​
  • Do not stack multiple combat-rewrite plugins unless you are fully sure about the order of operation. ModernCombat already touches hit detection, damage scaling, cooldowns, pearls, crits, shields, projectiles and legacy rules.
Troubleshooting
  • Plugin won’t enable: verify Java 17+, verify ProtocolLib is installed, and make sure your server is 1.19+.
  • WorldGuard flags missing: install WorldGuard first, then do a full restart.
  • Placeholders not working: install PlaceholderAPI and restart.
  • Config changes not applying: edit files in
    Code (Text):
    /plugins/ModernCombat/
    , not inside the jar, then restart or use the plugin reload command carefully.
  • Block-hitting not active: confirm the block-hit section is enabled, the server version supports the required item components, and the player has the permission if you enabled permission-locking.
  • Packet errors: update ProtocolLib first to latest dev build before reporting issues.
[​IMG]

ModernCombat (formerly ModernKnockback) delivers a highly configurable combat stack for practice, kit-PvP, HCF, minigame, survival and hybrid servers. It does not only change knockback — it also handles hit detection, bow boosting, pearls, potions, crits, old PvP mechanics, explosions, cooldowns, bedrock aim assist, client-side feature support, spectator fixes, and many smaller combat annoyances that usually require several separate plugins. If you encounter any issues or need support, please join our Discord support server, send a PM on SpigotMC, or post in the resource discussion!

[​IMG]
  • Custom knockback profiles with a GUI and command editor.​
  • Multiple built-in presets included in
    Code (Text):
    knockback.yml
    : default, vanilla_legacy, vanilla_modern, kohi, badlion, lunar.​
  • Profile-level control of horizontal / vertical knockback, friction, extra knockback, projectile knockback, punch scaling, explosion knockback, sprint behavior, attack speed, hit delay and more.​
  • Return of Bow Boosting with configurable velocity, arrow randomization removal, burn booster support and punch scaling.​
  • Hitbox modification and server-side hit detection using packets for much more controlled combat behavior.​
  • Lag compensation support for hit registration and fairness across pings.​
  • CPS limiter and attack-per-tick limiter for stricter old-school combat behavior.​
  • Reach limiter / old reach logic options for servers that want tighter melee control.​
  • WorldGuard integration with custom region flags for bowboost, custom-knockback, aim-assist, cps-cap, hit-detection and per-region knockback-profile selection.​
  • Bedrock aim assist for Floodgate players with configurable FOV, range, smoothness and allowed targets.​
  • Custom Splash Potion behavior with optimized trajectory / splash handling and legacy-like tuning.​
  • Block-hitting / Sword Blocking on modern versions with configurable damage reduction, material filters and optional permission locking.​
  • Legacy PvP suite inside one plugin: offhand control, elytra disable, no-lapis enchanting, legacy fire ticks, old regen, legacy projectile damage, old armor math, old tool damage, old potion durations/effects, old golden apples, sword-sweep control, projectile randomization removal, reach options and player collision control.​
  • Better spectator system to reduce spectator abuse such as block clipping / weird interactions.​
  • Fast crystal / custom explosion handling for end crystals and respawn anchors with packet hooks and configurable damage power.​
  • Optimized ender pearl system with anti-glitch handling, suffocation prevention, safe teleport search, optional refunds, tali / cross-pearl style behavior and configurable pearl damage.​
  • Custom item behaviors for shields, totems and chorus fruit.​
  • Cooldown framework for pearls, god apples, totems and any other material you want to add.​
  • Configurable critical hits including custom particles and projectile headshots.​
  • Per-player feature control using
    Code (Text):
    /playerfeature
    for practice / event servers.​
  • Client support integration for Lunar / Apollo, Badlion and Animatium feature messaging.​
  • Quality-of-life fixes such as disabling modern PvP sounds, disabling chosen particles, fixing double shifting, fixing double consuming, death-screen skipping and legacy swimming behavior.​
  • messages.yml support for command / GUI text customization.​
  • Folia support.​
And much more! Check the configuration overview further below.

[​IMG]
Installation

Requirements
  • Java: 17+ (check with
    Code (Text):
    java -version
    )
  • Server software: Spigot / Paper / Folia
  • Supported Minecraft versions: 1.19+ for the current source build
  • Required dependency: ProtocolLib (latest dev build recommended on new versions)
  • Optional integrations:
    • WorldGuard (region-based rules and flags) — Download
    • PlaceholderAPI (combat / cooldown placeholders) — Download
    • Floodgate (Bedrock Aim Assist) — Download

Quick Install (Recommended)
  1. Stop the server. Do not use
    Code (Text):
    /reload
    .
  2. Install ProtocolLib.
    • Use the latest ProtocolLib build appropriate for your server version.
    • Place the jar in
      Code (Text):
      /plugins/
      .
  3. Install ModernCombat.
    • Place
      Code (Text):
      ModernCombat-<version>.jar
      in
      Code (Text):
      /plugins/
      .
    • Start the server once and let it generate its files.
  4. Verify startup.
    • Check
      Code (Text):
      /plugins
      and make sure ProtocolLib and ModernCombat load successfully.
    • If your server is below 1.19, the current build will disable itself.
    • If ProtocolLib is missing, the plugin will disable itself.
  5. Edit the generated files.
    • Code (Text):
      /plugins/ModernCombat/config.yml
      — global modules, mechanics and feature settings
    • Code (Text):
      /plugins/ModernCombat/knockback.yml
      — knockback profiles and default profile
    • Code (Text):
      /plugins/ModernCombat/cooldowns.yml
      — item cooldown presets
    • Code (Text):
      /plugins/ModernCombat/messages.yml
      — command / GUI text
  6. Restart the server.

Important version notes
  • Block-hitting: the current implementation depends on the modern consumable component system. If your server version is too old for that component, the block-hit module will log that it is disabled.
  • WorldGuard: if you add WorldGuard later, perform a full restart so custom flags can register during plugin load.
  • PlaceholderAPI: placeholders are only available when PlaceholderAPI is installed and enabled.
  • Floodgate: only needed if you want Bedrock aim assist for Floodgate/Geyser players.

Auto-download option
ModernCombat includes a
Code (Text):
download-dependencies
option in
Code (Text):
config.yml
. When enabled, the plugin attempts to fetch missing dependencies such as ProtocolLib / Floodgate / PlaceholderAPI automatically. Manual installation is still the cleanest approach for production networks, but the option exists for convenience.

Pick a Knockback Preset (Fast Setup)
ModernCombat ships with multiple ready profiles in
Code (Text):
knockback.yml
:
  • default — balanced general-purpose profile
  • vanilla_legacy — closer to classic 1.8 feel
  • vanilla_modern — for cooldown PvP on modern combat
  • kohi — longer horizontal spacing, lower vertical
  • badlion — tighter client-PvP style profile
  • lunar — slightly range-focused modern practice profile

Set your default like:
Code (Text):

defaultProfile: kohi
 
Then restart the server or reload the plugin config cleanly.

Recommended setup paths
  • Practice / old-school PvP: use
    Code (Text):
    vanilla_legacy
    , enable
    Code (Text):
    oldpvp.enabled
    , keep
    Code (Text):
    cps-cap
    enabled, and tune
    Code (Text):
    hit-detection
    .
  • Modern cooldown PvP: use
    Code (Text):
    vanilla_modern
    , leave
    Code (Text):
    combatCooldown: true
    in the profile, and combine with optimized crit / shield / explosion settings.
  • HCF / factions style: combine legacy profile behavior with the optimized pearl module, cooldowns, old golden apples and WorldGuard region flags.
  • Mixed network: keep a safe global profile and override specific arenas per-player or per-region using
    Code (Text):
    /playerfeature
    or WorldGuard flags.

Optional Integrations (Only if you use them)
  • WorldGuard (Per-region control)
    • Install WorldGuard and restart the server.
    • ModernCombat registers custom flags during load.
    • You can then enable / disable individual combat systems inside specific regions, or assign a region-specific knockback profile.
  • PlaceholderAPI
    • Install PlaceholderAPI and restart.
    • ModernCombat registers the
      Code (Text):
      %moderncombat_*%
      placeholder namespace automatically.
    • Useful for scoreboards, action bars, menus and other plugins that read PAPI values.
  • Floodgate (Bedrock Aim Assist)
    • Install Floodgate (and Geyser if you use it).
    • Enable the Bedrock aim assist section in
      Code (Text):
      config.yml
      .
    • Only Bedrock players are targeted by this assist logic.

Updating ModernCombat (Safe Method)
  1. Stop the server.
  2. Replace the old jar in
    Code (Text):
    /plugins/
    .
  3. Start the server once to let new keys generate.
  4. Stop it again and review
    Code (Text):
    config.yml
    ,
    Code (Text):
    knockback.yml
    ,
    Code (Text):
    cooldowns.yml
    and
    Code (Text):
    messages.yml
    .
  5. Start normally.
Tip: keep a backup of the
Code (Text):
/plugins/ModernCombat/
folder before major updates.

First boot checklist (recommended before going live)
  1. Start the server once and confirm that
    Code (Text):
    config.yml
    ,
    Code (Text):
    messages.yml
    ,
    Code (Text):
    knockback.yml
    and
    Code (Text):
    cooldowns.yml
    were created.
  2. Pick your base combat identity first:
    Code (Text):
    vanilla_legacy
    ,
    Code (Text):
    kohi
    ,
    Code (Text):
    badlion
    ,
    Code (Text):
    lunar
    ,
    Code (Text):
    default
    or
    Code (Text):
    vanilla_modern
    .
  3. Decide whether you want modern cooldown combat or classic spam-click style. This mainly comes from the selected knockback profile and the
    Code (Text):
    combatCooldown
    /
    Code (Text):
    attackSpeed
    values inside it.
  4. Then enable only the extra systems you actually want: hit detection, block-hit, pearls, crits, oldpvp, custom item behaviors, cooldowns, explosions, aim assist, etc.
  5. Test melee, projectiles, pearls, potions, totems, shields, and region restrictions before opening the server to players.
  6. If you use WorldGuard, verify both the world
    Code (Text):
    pvp
    state and any custom ModernCombat flags in your key arenas / spawn regions.
[​IMG]
Commands & Permissions

Commands
  • /moderncombat (aliases: /combatreborn, /modernknockback, /moc)
    • /moderncombat or /moderncombat info — shows plugin info
    • /moderncombat support — shows support / Discord link (players must be OP; console allowed)
    • /moderncombat reload — reloads configs (players must be OP; console allowed)
  • /knockback (alias: /kb) — knockback profile manager (GUI + arguments)
    • /knockback or /knockback gui — opens the main profile GUI
    • /knockback list — opens the profiles list GUI
    • /knockback create — opens the profile creation GUI
    • /knockback create <profile> — creates a new profile from defaults immediately
    • /knockback edit <profile> — opens the editor GUI for that profile
    • /knockback edit <profile> <key> <value> — edits one value directly
    • /knockback delete <profile> — deletes a profile
    • /knockback default <profile> — sets the global default profile
    • /knockback reload — reloads
      Code (Text):
      knockback.yml
    Note: /knockback is player-only and only useful when custom knockback is enabled in config.
  • /playerfeature <player> <feature> [value] (alias: /featureplayer)
    • Useful for practice servers, staff tools and temporary arena overrides.
    • Supported features:
      Code (Text):
      bowboost
      ,
      Code (Text):
      custom-knockback
      ,
      Code (Text):
      hit-detection
      ,
      Code (Text):
      aim-assist
      ,
      Code (Text):
      cps-cap
      ,
      Code (Text):
      knockback-profile
    • If you omit the value, the command shows the player’s current value for that feature.
    • Examples:
      • Code (Text):
        /playerfeature Notch bowboost false
      • Code (Text):
        /playerfeature Notch hit-detection true
      • Code (Text):
        /playerfeature Notch knockback-profile kohi

Permissions
Permission What it allows Notes
moderncombat.command.knockback Use
Code (Text):
/knockback
and all of its subcommands / GUI tools
Required for profile management
moderncombat.command.playerfeature Use
Code (Text):
/playerfeature
For per-player combat overrides
moderncombat.blockhit Allows packet-based block-hitting Only checked when
Code (Text):
blockhit.require-permission: true
. The node can be changed with
Code (Text):
blockhit.permission-node
.
moderncombat.nolapis Allows “No-Lapis Enchanting” access Only checked when
Code (Text):
oldpvp.no-lapis.permission-locked: true
. The node can be changed with
Code (Text):
oldpvp.no-lapis.permission
.


LuckPerms examples
Code (Text):

# Give staff access to profile tools
/lp group admin permission set moderncombat.command.knockback true
/lp group admin permission set moderncombat.command.playerfeature true

# Optional block-hit access control
/lp group default permission set moderncombat.blockhit true

# Optional no-lapis access control
/lp group vip permission set moderncombat.nolapis true
 
Note about /moderncombat reload/support:
  • In the current build, reload and support are OP-gated for players rather than permission-node based.
  • Console can still use them.

Command behavior / edge cases
  • /knockback is player-only. Console cannot use the GUI-oriented profile command.
  • /knockback create <profile> fails if the profile already exists.
  • /knockback edit <profile> <key> <value> parses the target key using the existing value type. In practice this means numeric keys expect numbers, boolean keys expect
    Code (Text):
    true
    /
    Code (Text):
    false
    , and invalid input is rejected.
  • /knockback default <profile> only works if the named profile already exists.
  • /playerfeature <player> <feature> with no value returns the current state for that feature instead of changing it.
  • /playerfeature <player> knockback-profile <profile> should be treated as an existing-profile-only command in production. Use exact profile names from
    Code (Text):
    knockback.yml
    and verify the result after changes, especially on servers that also use WorldGuard region profile overrides.
  • /moderncombat reload reloads config-backed managers, but for major production changes a full restart is still the safest path.

[​IMG]

[​IMG] [​IMG] [​IMG] [​IMG]

[​IMG]
test.bytecore.hr - PUBLIC TEST SERVER
You can request your server to be added here!
----------------------------------------------------------------------------------------------
play.kyodo.network | Kyodo Network
seiky.net | Seiky Network

[​IMG]
[​IMG]

[​IMG]
Developer API / integration notes

ModernCombat also includes developer-facing hooks for people who want to integrate the combat pipeline into their own plugins.

Code (Text):

ModernCombatAPI.changeKnockback(Player player, String profileName)
ModernCombatAPI.changeKnockback(String profileName)
ModernCombatAPI.addCooldown(Player player, Material item, long duration)
ModernCombatAPI.hasCooldown(Player player, Material item)
ModernCombatAPI.checkCooldown(Player player, Material item)
ModernCombatAPI.processAimAssist(Player player)
ModernCombatAPI.getAimAssistTarget(Player player)

ModernCombatAPI.getKnockbackManager()
ModernCombatAPI.getCooldownManager()
ModernCombatAPI.getAimAssistManager()
ModernCombatAPI.getHitDetectionManager()
 

ServerSidePlayerHitEvent
  • Fired when the server-side hit detection system validates a hit.
  • Contains the attacker, victim and configured reach.
  • Cancellable.

BlockInteractHitEvent
  • Extends
    Code (Text):
    ServerSidePlayerHitEvent
    .
  • Includes the clicked block.
  • Lets you decide whether the original interaction should also be cancelled.

MCDamageEvent
  • Fired before final damage is written back into the Bukkit damage event.
  • Contains raw damage, base damage, weapon, sharpness level, strength / weakness data, crit multiplier and more.
  • Cancellable and mutable.

Code (Java):

@EventHandler
public void onServerSideHit (ServerSidePlayerHitEvent event ) {
    if (event. getVictim ( ) instanceof Player ) {
        // cancel hits in your own custom arena logic
        // event.setCancelled(true);
    }
}

@EventHandler
public void onBlockInteractHit (BlockInteractHitEvent event ) {
    // Example: cancel the block interaction but keep the hit
    // event.setCancelInteract(true);
}

@EventHandler
public void onMCDamage (MCDamageEvent event ) {
    // Example: add 10% damage in a special duel mode
    // event.setBaseDamage(event.getBaseDamage() * 1.10D);
}
 

The source also exposes a lightweight region-protection registration path for external plugins.

Code (Java):

RegionProtectionAPI. registerHook ( new AbstractRegionProtectionHook ( ) {
    @Override
    public boolean canPlayersDamage (Player attacker, Player victim ) {
        // Return true to allow, false to deny
        return true ;
    }
} ) ;
 
This lets you plug ModernCombat into your own protection systems if you do not want to depend only on vanilla world PvP state or WorldGuard.

  • The public API is source-exposed for custom integrations and advanced servers.
  • If your plugin integrates deeply with combat, custom events are usually the safest extension point because they sit in the actual combat flow.
  • For profile switching, prefer using the dedicated API / player-feature path instead of editing config files at runtime.
  • The public API managers throw
    Code (Text):
    IllegalStateException
    if you call them before the relevant manager is initialized, so integrate after plugin enable and guard your calls appropriately.
  • If you build your own region or arena system, a custom region-protection hook is often cleaner than hard-forking the combat checks.
  • Remember that a custom region hook which throws an exception currently defaults to allow. Keep hook implementations defensive and failure-safe.


This resource is not a one-trick knockback editor. It is intended to be the combat layer for modern servers that want much more control than vanilla provides, while still staying on current Minecraft versions.

  • Block-hit version path: the source checks for the modern consumable-component support and disables block-hit automatically when that path is unavailable. Always test this module on the exact Minecraft build you plan to ship.
  • Region-safe damage flow: even if custom knockback or rod / shield logic is enabled, player-vs-player handling still respects the region/world protection hooks.
  • Cooldown cleanup: cooldown data is cleared on player quit and player death, so those cooldowns are intentionally session-safe rather than infinite memory entries.
  • Profile ownership: the default profile is the global fallback, player feature overrides can change a player manually, and region movement can replace that profile when WorldGuard knockback-profile is in use.
  • Messages / GUI text: command and GUI feedback is designed to live in
    Code (Text):
    messages.yml
    , so networks can localize or restyle the administrative UX without touching the jar.
  • Source tree extras: the source includes additional advanced classes such as region-hook APIs and lag-switch detection scaffolding. If you rely on those advanced sections operationally, verify them against the exact compiled build you distribute.

  • ModernCombat separates gameplay settings from text presentation.
  • Use
    Code (Text):
    messages.yml
    for command usage lines, profile feedback, invalid-key errors, profile-created / deleted messages, playerfeature output and general admin-facing text.
  • This is especially useful for premium networks that want a consistent branding style across all staff tools.
  • If you localize the plugin, test long lines in the knockback GUI and command feedback so nothing becomes unreadable in smaller client chat windows.

  • Horizontal values mainly control combo distance and spacing.
  • Vertical values control lift and how easy it is to keep players airborne.
  • Friction changes how much previous velocity remains in the chain, which strongly affects combo smoothness.
  • Extra horizontal / vertical values are where many profile identities are really shaped.
  • Projectile and Punch values should be tuned separately from melee. Good melee knockback does not automatically mean good bow-boost or projectile feel.
  • combatCooldown / attackSpeed define whether a profile behaves like modern cooldown combat or fast classic combat.
  • stopSprint and
    Code (Text):
    combatHitDelay
    influence how sticky or forgiving the melee exchange feels in practice.
  • Change one family of values at a time and test in mirrors / duel arenas. Randomly editing everything at once usually creates noisy results that are harder to debug.

  • Reload vs restart:
    Code (Text):
    /moderncombat reload
    refreshes the main config objects,
    Code (Text):
    messages.yml
    ,
    Code (Text):
    knockback.yml
    ,
    Code (Text):
    cooldowns.yml
    and the legacy module stack, but it is not the same as a cold plugin bootstrap. If you change dependency presence, startup-only integrations, listener-heavy modules, ProtocolLib behavior, WorldGuard availability, Floodgate setup, or major enable/disable switches, do a full restart.
  • WorldGuard registration timing: custom flags are registered during startup. Installing, updating or removing WorldGuard without a full restart can leave the flag state different from what you expect.
  • Profile ownership and precedence: the plugin has three practical profile sources: the global default profile, manual per-player profile assignment, and WorldGuard region profile assignment. On WorldGuard-enabled servers, movement inside flagged regions can overwrite manual profile assignments. Decide which layer is the final authority on your network and document that internally for staff.
  • Placeholder accuracy:
    Code (Text):
    %moderncombat_modern_knockback_profile%
    is the safest live placeholder for scoreboards. The numeric placeholders in the current source build read from the configured default profile values, not guaranteed live per-player resolved values.
  • Block-hit support window: block-hit depends on the modern item-consumable component path and works best with ProtocolLib packet tracking enabled. Treat it as a test-on-your-exact-version feature. Also note that it is built around the main hand item and its configured material filters.
  • Shield sub-options: the shield behavior family should be treated as depending on the master shield section. If you change arrow / rod / axe shield behavior, validate it in-game on the exact compiled jar you plan to distribute rather than assuming every sub-toggle behaves identically on every stack.
  • Bedrock aim assist and debug mode: Bedrock aim assist requires Floodgate. In the source build,
    Code (Text):
    debug: true
    also makes the Bedrock check extremely permissive for testing. Do not benchmark or validate aim assist behavior with debug mode enabled unless that is intentional.
  • Legacy reach support: the legacy reach module only activates on server builds that actually expose the necessary interaction-range attributes. If the API is missing them, the module disables itself and the rest of the plugin continues normally.
  • Cooldown entry activation: a cooldown entry is only applied if both the material key and the
    Code (Text):
    event
    type match the real action. A typo or wrong event value will not crash the plugin — it will simply mean the cooldown never triggers. Always test each new custom entry by actually using the item.
  • Weapon / potion config validation: invalid material or potion keys are warned and skipped. Some legacy names are auto-normalized, but you should still treat config edits as exact-value work. If splash potion timing data is malformed, the loader can fall back to the drinkable values for that potion family.
  • Region protection hook safety: built-in and custom region hooks are deny-first, but a hook that throws an exception is treated as allow rather than deny. That is convenient for uptime, but it also means third-party hook code must be kept stable and tested carefully.
  • External client support packets: Lunar / Apollo / Badlion / Animatium support is sent as plugin messages when players join. If you change those settings, the cleanest validation path is to reconnect test accounts instead of relying only on hot-reload assumptions.
  • Pearl behavior is geometry-sensitive: anti-glitch pearls, pass-through checks, safe-location search and refund logic depend heavily on your map geometry. Fence gates, walls, trapdoors, slabs, stairs, plants, strings, cobwebs and 1x1 exits should all be tested on your own arenas before launch.
  • Mixed-combat stacks: ModernCombat already touches hit detection, knockback, projectiles, potions, cooldowns, crits, shields, pearls and multiple legacy rules. Running several combat rewrite plugins at once should be considered advanced-only and validated in a staging server first.

  • Region boundary test: hit players while crossing in and out of WorldGuard regions that change
    Code (Text):
    knockback-profile
    ,
    Code (Text):
    custom-knockback
    ,
    Code (Text):
    hit-detection
    or
    Code (Text):
    cps-cap
    . Confirm the combat feel changes exactly where you expect.
  • Manual override test: apply
    Code (Text):
    /playerfeature
    changes to a player, then move them through your arenas and safezones. Confirm whether the manual setting persists or is intentionally replaced by a region profile.
  • Pearl-through test: test pearls on slabs, stairs, walls, fence gates, cobweb, string, trapdoors, chest-under-gate and hopper-under-gate situations. Verify whether each case should pass through, refund, nudge, or deny on your ruleset.
  • Suffocation / 1x1 test: pearl into tight holes, corners, roof edges and one-by-one exits. Check both safe teleport search and refund behavior.
  • Cooldown event test: for every item in
    Code (Text):
    cooldowns.yml
    , verify the intended trigger path: right-click items, projectile launch items, consumed items and totem resurrection.
  • Shield test: verify shield behavior with arrows, rods and axes separately, both with and without protection regions, and with
    Code (Text):
    preserve-real-shield
    on the way you intend to ship it.
  • Block-hit test: validate start/stop behavior while right-clicking, swapping slots, dropping use, dying, respawning and reconnecting. Also confirm the selected weapon material list matches your ruleset.
  • Bowboost test: compare normal bows, Punch bows, fire-based scenarios and arena corners. Tune both force and consistency, not just raw distance.
  • Damage formula test: compare plain hits, crits, Strength, Weakness, armor, sharpness and projectile damage to make sure your oldpvp / crit / potion / armor sections are not multiplying into an unintended result.
  • Bedrock test: use at least one real Floodgate Bedrock account and one normal Java account. Confirm only the intended side receives aim assist.
  • Legacy reach test: if you enable reach, test both survival and creative, then confirm the server build actually exposes the interaction range attributes and that anticheat does not fight the change.
  • External client test: reconnect with Lunar / Badlion / Animatium clients after changing external-support settings. Confirm your desired miss-penalty or combat client behavior is actually being applied.
  • No-PvP area test: in worlds or regions with PvP denied, test melee, rods, pearls, arrows and shield interactions. Confirm nothing leaks through the protection layer.
  • Disconnect / death cleanup test: verify that cooldowns, block-hit state and temporary combat state do not survive in ways you do not want after death or reconnect.


PlaceholderAPI placeholders
When PlaceholderAPI is installed, ModernCombat registers the
Code (Text):
moderncombat
identifier.

General / profile placeholders
  • Code (Text):
    %moderncombat_default_profile%
  • Code (Text):
    %moderncombat_knockback_horizontal%
  • Code (Text):
    %moderncombat_knockback_vertical%
  • Code (Text):
    %moderncombat_knockback_vertical_limit%
  • Code (Text):
    %moderncombat_knockback_extra_horizontal%
  • Code (Text):
    %moderncombat_knockback_extra_vertical%
  • Code (Text):
    %moderncombat_netherite_knockback_resistance%
  • Code (Text):
    %moderncombat_knockback_non_player_entities%
  • Code (Text):
    %moderncombat_stop_sprint%
  • Code (Text):
    %moderncombat_cancel_dragging_in%
  • Code (Text):
    %moderncombat_combat_cooldown%
  • Code (Text):
    %moderncombat_attack_speed%
  • Code (Text):
    %moderncombat_combat_hit_delay%
  • Code (Text):
    %moderncombat_modern_knockback_profile%

Cooldown placeholders
  • Code (Text):
    %moderncombat_cooldown_status_ender_pearl%
    Code (Text):
    active
    or
    Code (Text):
    none
  • Code (Text):
    %moderncombat_cooldown_remaining_ender_pearl%
    → formatted remaining time
  • Code (Text):
    %moderncombat_cooldown_time_ender_pearl%
    → configured cooldown duration
  • Code (Text):
    %moderncombat_cooldown_name_ender_pearl%
    → pretty material name

WorldGuard custom flags
If WorldGuard is installed, ModernCombat registers the following flags:
  • Code (Text):
    bowboost
  • Code (Text):
    custom-knockback
  • Code (Text):
    cps-cap
  • Code (Text):
    hit-detection
  • Code (Text):
    aim-assist
  • Code (Text):
    knockback-profile
    (string flag)

Example region commands
Code (Text):

/rg flag spawn bowboost deny
/rg flag arena custom-knockback allow
/rg flag arena cps-cap allow
/rg flag arena hit-detection allow
/rg flag arena aim-assist deny
/rg flag arena knockback-profile kohi
 
Flag / protection precedence notes
  • ModernCombat region protection is not limited to the custom WorldGuard flags. The plugin also checks whether PvP is allowed in the world / region at all before letting player-vs-player logic proceed.
  • Code (Text):
    bowboost
    ,
    Code (Text):
    custom-knockback
    ,
    Code (Text):
    cps-cap
    ,
    Code (Text):
    hit-detection
    and
    Code (Text):
    aim-assist
    are state flags.
    Code (Text):
    knockback-profile
    is a string flag.
  • If
    Code (Text):
    knockback-profile
    points to a non-existent profile, the plugin falls back to the configured default profile.
  • If you use both /playerfeature knockback-profile and WorldGuard
    Code (Text):
    knockback-profile
    , movement inside flagged regions can refresh the player’s active profile to the region profile. That is useful for arena-based servers, but it should be understood before you mix both systems.


Configuration overview
The plugin is large by design. The good news is that the config is modular: you can run only the parts you need.

  • Code (Text):
    debug
    — enables extra logging
  • Code (Text):
    metrics
    — bStats toggle
  • Code (Text):
    download-dependencies
    — auto-download helper
  • Code (Text):
    death-screen.*
    — disable death screen / immediate respawn
  • Code (Text):
    legacy-swimming
    — legacy-style swimming handling
  • Code (Text):
    better-spectator-system.enabled
    — spectator packet / behavior corrections
  • Code (Text):
    disabled-particles.list
    — block specific particle packets
  • Code (Text):
    disable-sounds.*
    — globally suppress chosen sounds
  • Code (Text):
    fix-double-shifting
    — packet guard against duplicate sneak toggles
  • Code (Text):
    fix-double-consuming
    — packet guard against duplicate consumption

  • defaultProfile — global fallback profile.
  • profiles.<name>.knockbackHorizontal — base horizontal melee knockback.
  • profiles.<name>.knockbackVertical — base vertical melee knockback.
  • profiles.<name>.knockbackVerticalLimit — cap for vertical knockback.
  • profiles.<name>.knockbackExtraHorizontal — extra horizontal knockback applied in the hit pipeline.
  • profiles.<name>.knockbackExtraVertical — extra vertical knockback applied in the hit pipeline.
  • profiles.<name>.knockbackFriction — how much existing velocity is preserved / reduced.
  • profiles.<name>.knockbackEnchantMultiplier — multiplier for enchant-related knockback.
  • profiles.<name>.projectileKnockbackHorizontal — projectile horizontal knockback.
  • profiles.<name>.projectileKnockbackVertical — projectile vertical knockback.
  • profiles.<name>.projectileKnockbackVerticalLimit — projectile vertical cap.
  • profiles.<name>.projectileKnockbackExtraHorizontal — extra projectile horizontal push.
  • profiles.<name>.projectileKnockbackExtraVertical — extra projectile vertical push.
  • profiles.<name>.projectilePunchBaseMultiplier — base multiplier when a projectile has Punch.
  • profiles.<name>.projectilePunchPerLevel — extra horizontal punch scaling per level.
  • profiles.<name>.projectilePunchVerticalBaseMultiplier — base vertical punch multiplier.
  • profiles.<name>.projectilePunchVerticalPerLevel — extra vertical punch scaling per level.
  • profiles.<name>.projectilePunchExtraHorizontal — extra horizontal force from Punch shots.
  • profiles.<name>.projectilePunchExtraVertical — extra vertical force from Punch shots.
  • profiles.<name>.explosionKnockbackHorizontal — explosion horizontal knockback.
  • profiles.<name>.explosionKnockbackVertical — explosion vertical knockback.
  • profiles.<name>.explosionKnockbackVerticalLimit — explosion vertical cap.
  • profiles.<name>.explosionKnockbackStraight — whether explosions push in a straighter direction.
  • profiles.<name>.netheriteKnockbackResistance — whether netherite resistance is respected.
  • profiles.<name>.knockbackNonPlayerEntities — whether custom knockback also applies to non-player entities.
  • profiles.<name>.stopSprint — whether sprint state is cancelled on hit.
  • profiles.<name>.cancelDraggingIn — controls drag-in behavior (
    Code (Text):
    players
    ,
    Code (Text):
    mobs
    ,
    Code (Text):
    all
    , depending on your usage).
  • profiles.<name>.arrowSpeedMultiplier — arrow velocity multiplier.
  • profiles.<name>.fishingRodSpeedMultiplier — fishing rod hook/projectile speed multiplier.
  • profiles.<name>.enderPearlSpeedMultiplier — ender pearl throw speed multiplier.
  • profiles.<name>.otherProjectileSpeedMultiplier — generic projectile speed multiplier.
  • profiles.<name>.combatCooldown — whether that profile respects modern attack cooldown.
  • profiles.<name>.attackSpeed — attack speed value used when the profile wants modern cooldown PvP.
  • profiles.<name>.combatHitDelay — extra hit-delay tuning.

  • Code (Text):
    hit-detection.enable
    — master switch for packet-based server-side hit detection
  • Code (Text):
    hit-detection.hit-reach
    — configured reach
  • Code (Text):
    hit-detection.hitbox.length
    /
    Code (Text):
    height
    — custom hitbox dimensions
  • Code (Text):
    hit-detection.allowed-targets.*
    — whitelist / blacklist entities
  • Code (Text):
    hit-detection.hit-behind-block.*
    — control whether certain blocks can still allow hits through or around them
  • Code (Text):
    lag-compensation.*
    — rewind history size, ping offset, smoothing and transaction-packet behavior
  • Code (Text):
    bedrock-aim-assist.enable
    — enables aim assist for Bedrock players only
  • Code (Text):
    bedrock-aim-assist.smoothness
    — smoothing factor
  • Code (Text):
    bedrock-aim-assist.range
    — assist radius
  • Code (Text):
    bedrock-aim-assist.targets.*
    — whitelist / blacklist of valid targets

  • Code (Text):
    bowboosting.enable
    — enables bow boosting
  • Code (Text):
    bowboosting.remove-arrow-randomization
    — cleaner arrow trajectories
  • Code (Text):
    bowboosting.burn-booster
    — supports fire-based boosting behavior
  • Code (Text):
    bowboosting.velocity-horizontal
    /
    Code (Text):
    velocity-vertical
    — base boost force
  • Code (Text):
    bowboosting.punch.*
    — fine-tune punch scaling and vertical behavior
  • Code (Text):
    blockhit.enable
    — enables sword-block / block-hit logic
  • Code (Text):
    blockhit.damage-reduction
    — blocked damage percentage
  • Code (Text):
    blockhit.materials.*
    — whitelist / blacklist of items that can block-hit
  • Code (Text):
    blockhit.require-permission
    /
    Code (Text):
    blockhit.permission-node
    — optional access control
  • Code (Text):
    blockhit.preserve-real-shield
    — preserves normal shield behavior where desired
  • Code (Text):
    optimized-crits.enabled
    — custom crit pipeline
  • Code (Text):
    optimized-crits.multiplier
    — critical damage multiplier
  • Code (Text):
    optimized-crits.allow-sprinting
    — allows sprinting crit behavior
  • Code (Text):
    optimized-crits.headshot-projectile
    — enables projectile headshots
  • Code (Text):
    optimized-crits.headshot-damage-multiplier
    — headshot damage scaling
  • Code (Text):
    optimized-crits.particle*
    /
    Code (Text):
    magic-particle*
    — visual tuning

  • Code (Text):
    optimized-pearls.enabled
    — master pearl module
  • Code (Text):
    optimized-pearls.self-damage
    /
    Code (Text):
    other-damage
    — pearl damage control
  • Code (Text):
    optimized-pearls.no-damage-ticks
    — post-pearl i-frame tuning
  • Code (Text):
    optimized-pearls.pearl-checks.*
    — cross-pearl / tali / fence-gate / cobweb / string / plant checks
  • Code (Text):
    optimized-pearls.anti-glitch.*
    — anti-wall / chest-under-gate / hopper-under-gate logic
  • Code (Text):
    optimized-pearls.prevent-suffocation.*
    — safe-location search and risky-pearl prevention
  • Code (Text):
    optimized-pearls.refund.*
    — whether failed pearls are refunded, with optional message / console command
  • Code (Text):
    explosions.crystal.*
    — crystal power, radius, fire, block damage and packet options
  • Code (Text):
    explosions.anchor.*
    — respawn anchor overload and damage tuning
  • Code (Text):
    optimized-potions.enabled
    — optimized potion projectile model
  • Code (Text):
    optimized-potions.model
    Code (Text):
    LEGACY
    or
    Code (Text):
    CUSTOM
  • Code (Text):
    optimized-potions.model.legacy.*
    — legacy-style potion flight
  • Code (Text):
    optimized-potions.model.custom.*
    — custom potion flight / splash shape
  • Code (Text):
    cooldowns.enabled
    — enables the cooldown framework
  • Code (Text):
    cooldowns.suffix
    — formatted time suffixes like
    Code (Text):
    1m 20s

  • Code (Text):
    custom-item-behaviors.shields.*
    — disable shields with arrows / fishing rods / axes and tune shield knockback
  • Code (Text):
    custom-item-behaviors.totem.*
    — disable totems entirely, disable for players, change the applied effects, add extra health
  • Code (Text):
    custom-item-behaviors.chorus-fruit.*
    — change hunger, saturation, effects and teleport radius, or prevent chorus fruit entirely

Effect list format
Code (Text):

ABSORPTION:2:5
FIRE_RESISTANCE:1:40
REGENERATION:2:45
 
Format =
Code (Text):
EFFECT:LEVEL:SECONDS

  • Code (Text):
    oldpvp.enabled
    — master switch
  • Code (Text):
    oldpvp.elytra.disabled
    — disables elytra use
  • Code (Text):
    oldpvp.offhand.*
    — disables or filters offhand items
  • Code (Text):
    oldpvp.no-lapis.*
    — lapis-free enchanting with optional permission requirement
  • Code (Text):
    oldpvp.legacy-burn-delay.*
    — restore older fire tick timing
  • Code (Text):
    oldpvp.legacy-projectile-damage.*
    — custom arrow/projectile damage
  • Code (Text):
    oldpvp.legacy-health-regen.*
    — classic regen interval / exhaustion
  • Code (Text):
    oldpvp.sword-sweep.*
    — disable or restrict sweep logic
  • Code (Text):
    oldpvp.disable-projectile-randomization.*
    — cleaner projectile trajectories
  • Code (Text):
    oldpvp.reach.*
    — old reach options and hitbox margin
  • Code (Text):
    oldpvp.golden-apples.*
    — old god-apple crafting and potion behavior
  • Code (Text):
    oldpvp.armour.*
    — legacy armour and durability math
  • Code (Text):
    oldpvp.tool-damage.*
    — custom weapon damage table and old sharpness handling
  • Code (Text):
    oldpvp.potion.potion-durations
    — old potion times
  • Code (Text):
    oldpvp.potion.potion-effects
    — strength / weakness effect modifiers
  • Code (Text):
    oldpvp.disable-modern-pvp-sounds.enabled
    — suppresses modern combat sounds
  • Code (Text):
    oldpvp.player-collisions.*
    — player collision team rules

Each material entry contains:
Code (Text):

ender_pearl:
  cooldown: 18
  message: "You cannot use an Ender Pearl for another %time%."
  action-bar: "You must wait %time% before using Ender Pearl again."
  event: launch
 
event can be tied to how the item is used:
  • Code (Text):
    interact
    — right-click use
  • Code (Text):
    launch
    — thrown / launched projectiles
  • Code (Text):
    consume
    — eaten or drunk
  • Code (Text):
    resurrect
    — totem resurrection

  • Code (Text):
    external-support.animatium.*
    — Animatium feature messages
  • Code (Text):
    external-support.lunar.*
    — Lunar / Apollo plugin messaging
  • Code (Text):
    external-support.badlion-client.*
    — Badlion plugin messaging
  • Code (Text):
    lag-switch-detection.*
    — configurable keepalive / transaction-based lag-switch detection settings and punish method values (
    Code (Text):
    KICK
    ,
    Code (Text):
    HIDE
    ,
    Code (Text):
    BLIND
    )


A) Classic practice / combo PvP
  • Use
    Code (Text):
    default
    ,
    Code (Text):
    kohi
    ,
    Code (Text):
    badlion
    or
    Code (Text):
    lunar
    .
  • Keep
    Code (Text):
    custom-knockback.enabled
    on.
  • Enable
    Code (Text):
    hit-detection.enable
    and
    Code (Text):
    cps-cap.enabled
    .
  • Enable
    Code (Text):
    oldpvp.enabled
    if you want a broader 1.8-like ruleset.
  • Use
    Code (Text):
    blockhit.enable
    only if your server build supports the required component path and you actually want sword-blocking on your ruleset.

B) HCF / factions / kitmap style
  • Enable the optimized pearl module and cooldown framework first.
  • Tune
    Code (Text):
    optimized-pearls.refund.*
    ,
    Code (Text):
    prevent-suffocation.*
    and
    Code (Text):
    pearl-checks.*
    before launch.
  • Configure
    Code (Text):
    oldpvp.golden-apples.*
    , shield logic, totems and chorus fruit based on your item policy.
  • Use WorldGuard flags heavily for spawn, koth, safezone and event areas.

C) Modern survival / SMP with controlled PvP
  • Start from
    Code (Text):
    vanilla_modern
    .
  • Leave
    Code (Text):
    combatCooldown
    on and keep
    Code (Text):
    attackSpeed
    close to vanilla-modern expectations.
  • Use only the modules you explicitly need: cooldowns, shield tweaks, totem tweaks, explosions, pearls, better spectator.
  • Avoid enabling every legacy rule just because it exists — SMP players usually benefit from a lighter configuration.

D) Multi-arena networks
  • Use one safe global profile.
  • Apply per-arena differences using WorldGuard
    Code (Text):
    knockback-profile
    or
    Code (Text):
    /playerfeature
    .
  • Document internally which system owns the final profile so staff do not fight the region overrides accidentally.

[​IMG]
  • Redistribution of this plugin to other individuals, networks, or websites is strictly prohibited.
  • This plugin is licensed for use exclusively on your server or network.
  • Please refrain from leaving unconstructive reviews, such as complaints about missing features or updates not meeting your requests. The plugin's features are clearly listed on the main page, so you are fully informed before purchasing.
  • Refunds are not available.
  • While I strive to provide updates, they will be released as my schedule permits. Please understand that I have other commitments outside of this project.
Resource Information
Author:
----------
Total Downloads: 53
First Release: Jun 12, 2024
Last Update: Mar 21, 2026
Category: ---------------
All-Time Rating:
6 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings