⚔️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 plugin that allows server owners to modify knockback settings to their exact specifications. Customize hitbox size, optimize hit detection. Enjoy full control of PvP – from the return of bow boosting and hitbox modifications to dynamic legacy mechanics that recreate the classic 1.8 experience. Customize everything and tailor PvP exactly how you want it!
And many more things!

[​IMG]
  • Works on modern versions of Spigot/Paper/Folia – tested on 1.18+ (may work on 1.9 as well).​
  • Requires ProtocolLib ( latest dev build recommended) and optionally WorldGuard for regional settings control.​
  • I don't advise using ViaRewind while using this plugin. This plugin was made so you don't have to use 1.8 clients anymore and using ViaRewind can cause issues.​
  • Plugin requires java 17+.​

[​IMG]

ModernCombat (formerly ModernKnockback) delivers a revolutionary, fully customizable combat experience. Its advanced features empower server owners to shape PvP by controlling everything from bow boosting, packet based knockback, optimized hit detection, optimized spash potions, crystals to legacy combat mechanics. 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]
  • Complete control of knockback settings – fine-tune every parameter.​
  • Return of Bow Boosting (Configurable)​
  • Hitbox Modification using packets (adjust hitbox size)​
  • Server Side Hit Detection for accurate combat handling​
  • Lag Compensation Hit Detection System ensures fair play regardless of ping​
  • Accurate CPS Limiter for old-school PvP experiences​
  • Reach Limiter that doubles as an anticheat measure​
  • WorldGuard integration for regional control over custom PvP settings​
  • Old Combat Modifications (attack frequency and hit delay adjustments)​
  • Aim Assist for Mobile Bedrock Players (requires Floodgate on Spigot)​
  • Custom Splash Potion Behavior for tailored combat effects​
  • Block-hitting / Sword Blocking (1.21.4+ only) – customize blocked damage with NBTEditor and ProtocolLib​
  • Legacy Mechanics integrated – legacy tool damage, potions, off-hand disabling, elytra disabling, lapis enchanting, burn delay, health regen, saturation, armor, and projectile behavior all in one plugin​
  • Better Spectator System – prevents block clipping, teleportation, and inventory interactions in spectator mode​
  • Anti-Glitch Pearls – advanced packet handling to prevent pearl glitches​
  • Fast Crystal – rapid crystal placement and destruction via optimized packet handling​
  • Knockback-Sync (Beta) – latency-agnostic knockback ensures consistent performance (beta feature)​
  • Module for Item Behaviors – fully configurable settings for shields, end crystals, respawn anchors, totems, etc. Modify explosions of items, disable shields with arrows etc...​
  • Cooldown System – configurable presets for god apples, enderpearls, totems, with options to add new cooldowns​
  • New Legacy Swimming Mode – disable the swimming animation safely using packet manipulation​
  • Configurable Critical Hits – completely customize critical hit behavior​
  • Player Feature system (Enable or disable every aspect of plugin for specific players using command /playerfeature). For practice servers.​
  • Lag Switch Detection - Detect and punish users who abuse the bad net code of minecraft server (Punishments: KICK, HIDE, BLIND)​
  • Folia Support (NEW!)​
  • And much more!​
[​IMG]
Commands:
ModernKnockback Command - mk.command.mk
Knockback Command - mk.command.knockback

Code (YAML):

# Prints extra information in console (safe for production, but chatty).
debug
: false

# If true, the plugin auto-downloads soft-deps (e.g., ProtocolLib) on first run.
download-dependencies
: true

menu
:
  # Placeholder item used in plugin GUIs when a slot is intentionally “empty”.
  placeholder
: BLACK_STAINED_GLASS_PANE
  # If true, uses player heads where applicable for nicer UI.
  use-heads
: true

death-screen
:
  # If true, disables Mojang’s death screen and lets plugin handle flow instantly.
  disabled
: true
  # If true, also set the gamerule to keep behavior consistent across worlds.
  gamerule
: true

# 1.13+ made swimming behave differently. Enable to simulate pre-1.13 “legacy” swim.
legacy-swimming
: true

custom-knockback
:
  # Master switch for the plugin’s knockback stack (packet+physics).
  enabled
: true
  # If true, runs KB application on the main thread tick; if false, prefers async-safe queue.
  # Leave false unless you must debug order-of-operations with other combat plugins.
  sync
: false
  clamp
:
    # Caps extreme velocities from explosions/bow boosts etc. to avoid “rocket” launches.
    enabled
: true
    # Absolute cap applied to the vector length (vanilla is ~4.0 before drag).
    max
: 3.9

cooldowns
:
  # Shows action cooldowns (blockhit, rod, etc.) in a synchronized way.
  enabled
: true
  # If true, prints a short “s” suffix (e.g., 1.2s) instead of raw ticks.
  suffix
: true

better-spectator-system
:
  # Improves spectator handling (no collision, action filtering, cleaner camera swaps).
  enabled
: true

bowboosting
:
  # Enable reliable “bow boosting” (self-hit propulsion) with cleaner physics.
  enable
: true
  # Removes vanilla RNG added to arrows for consistent boost direction.
  remove-arrow-randomization
: true
  # Slightly increases boost when the shooter is burning (classic kit behavior).
  burn-booster
: true
  # Horizontal and vertical multipliers applied to self-hit velocity.
  velocity-horizontal
: 0.5
  velocity-vertical
: 0.125
  # Minimum arrow lifetime (ticks) before it can boost you (prevents instant “ghost” hits).
  min-life-ticks
: 3
  # Force arrow age used for consistent physics; increase if your server feels too “light”.
  arrow-ticks-lived
: 15
  # Shrinks the player’s hitbox when the arrow leaves, avoiding double-hits.
  leave-hitbox-reduction
: 0.1
  # Temporarily expands hitbox on entry to make valid boosts easier to register.
  enter-hitbox-expansion
: 0.0
  # Smooths sudden direction spikes so boosts feel controllable.
  smoothing-factor
: 0.2

cps-cap
:
  # Limits clicks-per-second counted by combat logic to curb autoclickers/macros.
  enabled
: true
  # Maximum CPS considered valid by combos/penalties (excess clicks are ignored).
  amount
: 15

attack-limit-per-tick
:
  # Prevents more than one processed attack per player per tick (anti “double-hit” exploits).
  enabled
: true

# Mitigates “double shift” false toggles (sprint/sneak desync), common on certain clients.
fix-double-shifting
: true
# Prevents eating/use events from firing twice under lag or packet duplication.
fix-double-consuming
: true

hit-detection
:
  # Enables the plugin’s reach and hitbox logic (set false to use vanilla).
  enable
: true
  # Maximum legitimate reach (blocks). 3.5 suits 1.8-like PvP; raise cautiously.
  hit-reach
: 3.5
  hitbox
:
    # Forward length of target hitbox “capsule” used for ray tests.
    length
: 1.0
    # Height of the capsule; 2.0 matches most adult mobs/players.
    height
: 2.0
  allowed-targets
:
    # WHITELIST = only listed entities are hittable; BLACKLIST = all except listed.
    mode
: WHITELIST
    entities
:
     - PLAYER
      - ZOMBIE
  hit-behind-block
:
    # If true, plugin checks simple obstructions (like flowers) and lets legitimate hits through.
    enabled
: true
    # If true, respects the block’s “collidable” flag; set false to treat as non-blocking.
    collidable
: true
    # If true, allows projectiles/melee to destroy listed blocks; false = do not break.
    destroy
: false
    # WHITELIST = only these materials are treated as “soft” blockers; BLACKLIST = everything except.
    mode
: WHITELIST
    materials
:
     - SUNFLOWER

lag-compensation
:
  # Millisecond resolution for time alignment (40ms ~ 2 ticks). Lower = more precise + costlier.
  time-resolution
: 40
  # How many historical samples to retain for reconciliation.
  history-size
: 20
  # Adds a fixed ms offset to account for average client input delay (tune per region).
  ping-offset
: 175
  # Exponential smoothing factors for ping/jitter (0..1). Higher = react faster.
  pingSmoothingAlpha
: 0.75
  jitterSmoothingBeta
: 0.75
  # Caps tolerated jitter spikes before treating samples as outliers.
  maxJitterThreshold
: 50.0
  # If true, uses transaction packets for accurate RTT; otherwise falls back to move timing.
  transaction-packet-enabled
: true
  # If true, also listens to PlayerMoveEvent as additional timing input (slightly heavier).
  use-move-event
: false

bedrock-aim-assist
:
  # Lightweight rotational assist for Bedrock (Geyser/floodgate) users only.
  enable
: true
  # 0..1 smoothing—higher = stronger magnetism, lower = subtler correction.
  smoothness
: 0.5
  # Maximum lock-on distance in blocks.
  range
: 6
  targets
:
    # WHITELIST/BLACKLIST for aim-assist eligible entities.
    mode
: WHITELIST
    list
:
     - PLAYER
      - ZOMBIE

blockhit
:
  # Classic 1.8 block-hitting: reduce damage briefly on hit while blocking.
  enable
: true
  # Percentage of damage reduced while a valid blockhit is active (50 = half).
  damage-reduction
: 50
  # Fix for “stuck digging” animation when quickly toggling block.
  block-dig-fixer
: true
  # If true, only reduce damage from entities (not lava/fall/etc.).
  only-entity-damage
: true
  materials
:
    # Which items can trigger blockhit (swords by default).
    mode
: WHITELIST
    list
:
     - NETHERITE_SWORD
      - DIAMOND_SWORD
      - IRON_SWORD
      - GOLDEN_SWORD
      - STONE_SWORD
      - WOODEN_SWORD

disabled-particles
:
  # Particle names to suppress globally (helps visibility/perf).
  list
:
   - DAMAGE_INDICATOR

disable-sounds
:
  # Master switch for sound suppression.
  enabled
: false
  # If true, treat names as a whitelist to ALLOW instead of block.
  whitelist
: false
  names
:
   - ENTITY_PLAYER_ATTACK_STRONG
    - ENTITY_PLAYER_ATTACK_SWEEP
    - ENTITY_PLAYER_ATTACK_NODAMAGE
    - ENTITY_PLAYER_ATTACK_KNOCKBACK
    - ENTITY_PLAYER_ATTACK_CRIT
    - ENTITY_PLAYER_ATTACK_WEAK

optimized-pearls
:
  # Cleans up ender pearl behavior (predictable damage & mites).
  enabled
: true
  # Spawn endermites on pearl with chance below (vanilla-like flavor).
  spawn-endermites
: true
  # 0.0..1.0 probability for mite spawn.
  spawn-endermites-chance
: 0.1
  # Damage dealt to the thrower.
  self-damage
: 6.0
  # Damage dealt when you pearl into another entity.
  other-damage
: 3.0
  # Invulnerability after teleport (ticks) to prevent immediate chain damage.
  no-damage-ticks
: 5
  # Sound played at destination.
  pearl-sound
: ENDERMAN_TELEPORT

optimized-crits
:
  # Consistent criticals + optional headshot logic for projectiles.
  enabled
: true
  allowed-targets
:
    mode
: WHITELIST
    entities
:
     - PLAYER
      - ZOMBIE
  # Damage multiplier when a valid crit occurs.
  multiplier
: 1.5
  # Minimum fall distance (blocks) to qualify as a crit.
  fall-distance
: 0.1
  # Allow crits while sprinting (vanilla usually restricts this).
  allow-sprinting
: true
  # Visual feedback for crits (particle type + density).
  particle
: CRIT
  particle-min-count
: 10
  particle-max-count
: 50
  particle-multiplier
: 1.5
  particle-spread
: 0.3
  particle-velocity
: 0.1
  # If true, projectiles can “headshot”.
  headshot-projectile
: true
  # Headshot hitbox tolerance (blocks). Lower = harder to hit.
  headshot-tolerance
: 0.1
  # Additional damage on headshot (multiplier below).
  headshot-damage
: true
  headshot-damage-multiplier
: 1.5
  # 0..1 accuracy factor for headshot window smoothing.
  hit-accuracy
: 0.5
  # Optional magical crit particle set.
  magic-particle
: CRIT_MAGIC
  magic-particle-min-count
: 15
  magic-particle-max-count
: 60
  magic-particle-multiplier
: 1.5
  magic-particle-spread
: 0.4
  magic-particle-velocity
: 0.15

custom-item-behaviors
:
  # Enables shield/totem/chorus overrides below.
  enabled
: true

  shields
:
    enabled
: true
    # Arrows can disable a raised shield for the cooldown below.
    disabled-by-arrows
:
      enabled
: true
      # Ticks the shield stays disabled after an arrow connects.
      cooldown
: 100
    # Fishing rods can also disable shields briefly.
    disabled-by-rods
:
      enabled
: true
      cooldown
: 25
    # Optional knockback on successful shield block (push attacker back).
    knockback
:
      enabled
: true
      # Percentage of incoming KB reflected/applied.
      percentage
: 0.5

  totem
:
    # Enables custom totem flow in your plugin.
    enabled
: true
    # If true, TOTEMS DO NOTHING (resurrections are cancelled). Useful for hardcore modes.
    disable-all
: false
    # Effects applied on successful totem use (NAME:AMPLIFIER:SECONDS).
    effects
:
     - ABSORPTION:2:5
      - FIRE_RESISTANCE:1:40
      - REGENERATION:2:45
    # If true, players are never allowed to resurrect (even with totem). Cancels event.
    disable-players
: false
    # Extra hearts granted on top of vanilla 1 HP after resurrection (capped by max health).
    additional-health
: 0.0

  chorus-fruit
:
    enabled
: true
    # Hunger and saturation restored when eaten.
    hunger
: 4
    saturation
: 2.4
    # Maximum random teleport distance (blocks).
    max-teleport
: 8
    # If true, players cannot eat chorus fruit at all.
    prevent-eating
: false
    effects
:
      enabled
: true
      # Optional post-teleport effects (NAME:AMPLIFIER:SECONDS).
      list
:
       - ABSORPTION:2:5
        - FIRE_RESISTANCE:1:40
        - REGENERATION:2:45

oldpvp
:
  # Master switch for the 1.8-style PvP bundle.
  enabled
: true

  elytra
:
    # Disable elytra usage (prevents air strafing/crit abuse in “old” kits).
    disabled
: false

  offhand
:
    # Disable offhand entirely or allow only whitelisted items (below).
    disabled
: true
    # If true, only listed items are allowed in offhand; if false, listed are blocked.
    whitelist
: true
    materials
:
     - TOTEM_OF_UNDYING

  no-lapis
:
    # If true, allows enchanting without lapis (old servers feel).
    enabled
: true
    # Require a permission to use nolapis (lets you gate it to certain modes).
    permission-locked
: true
    permission
: moderncombat.nolapis

  legacy-burn-delay
:
    # Restores older fire tick pacing; higher fire-ticks = longer burns.
    enabled
: true
    fire-ticks
: 140

  legacy-projectile-damage
:
    # Restores old minimal projectile damage behavior when needed.
    enabled
: true
    damage
: 1.0E-11

  legacy-health-regen
:
    # Pre-1.9 style regen: small pulses frequently.
    enabled
: true
    amount
: 1
    interval
: 3990
    exhaustion
: 3

  sword-sweep
:
    # Toggle modern sweeping attacks for listed swords (keep false for 1.8 kits).
    enabled
: false
    mode
: WHITELIST
    materials
:
     - NETHERITE_SWORD

  disable-projectile-randomization
:
    # Removes velocity randomness on projectiles; higher epsilon = stronger correction.
    enabled
: true
    epsilon
: 1.0

  golden-apples
:
    # Controls crafting & effects for gold/enchanted apples.
    enabled
: true
    enchanted-crafting
: true
    old-potion-effects
: true
    golden-apple-effects
:
      regeneration
:
        duration
: 5
        amplifier
: 1
      absorption
:
        duration
: 120
        amplifier
: 0
    enchanted-golden-apple-effects
:
      regeneration
:
        duration
: 30
        amplifier
: 4
      resistance
:
        duration
: 300
        amplifier
: 0
      fire_resistance
:
        duration
: 300
        amplifier
: 0
      absorption
:
        duration
: 120
        amplifier
: 3

  armour
:
    enabled
: true
    durability
:
      # Multiplier on vanilla durability loss (1 = vanilla). Lower to make armour last longer.
      reduction
: 1
    strength
:
      # Flat damage reduction per armour point (0.04 ≈ 4%/point like 1.8).
      reduction
: 0.04
      # How much each armour level contributes (tweak for custom kits).
      level
: 0.2

  tool-damage
:
    enabled
: true
    # If true, applies 1.8-style Sharpness formula (flat addend) instead of 1.9+ multiplier.
    old-sharpness
: true
    damages
:
      # Base attack damage by item. Adjust to fine-tune kit balance.
      AIR
: 1.0
      WOODEN_SWORD
: 4.0
      GOLDEN_SWORD
: 4.0
      STONE_SWORD
: 5.0
      IRON_SWORD
: 6.0
      DIAMOND_SWORD
: 7.0
      NETHERITE_SWORD
: 8.0
      WOODEN_AXE
: 3.0
      GOLDEN_AXE
: 3.0
      STONE_AXE
: 4.0
      IRON_AXE
: 5.0
      DIAMOND_AXE
: 6.0
      # NOTE: If you use 1.16+, correct material is NETHERITE_AXE (typo “NETHRITE_AXE” will be ignored).
      NETHRITE_AXE
: 7.0
      WOODEN_PICKAXE
: 2.0
      GOLDEN_PICKAXE
: 2.0
      STONE_PICKAXE
: 3.0
      IRON_PICKAXE
: 4.0
      DIAMOND_PICKAXE
: 5.0
      NETHERITE_PICKAXE
: 6.0
      WOODEN_SPADE
: 1.0
      GOLDEN_SPADE
: 1.0
      STONE_SPADE
: 2.0
      IRON_SPADE
: 3.0
      DIAMOND_SPADE
: 4.0
      NETHERITE_SPADE
: 5.0
      WOODEN_HOE
: 1.0
      GOLDEN_HOE
: 1.0
      STONE_HOE
: 1.0
      IRON_HOE
: 1.0
      DIAMOND_HOE
: 1.0
      MACE
: 6.0
      NETHERITE_HOE
: 1.0

  potion
:
    # Overrides durations and effect math for classic PvP balance.
    enabled
: true
    potion-durations
:
      # Durations are in seconds for readability; plugin converts to ticks.
      regen
:
        drinkable
:
          base
: 45
          II
: 22
          extended
: 120
        splash
:
          base
: 33
          II
: 16
          extended
: 90
      speed
:
        drinkable
:
          base
: 180
          II
: 90
          extended
: 480
        splash
:
          base
: 135
          II
: 67
          extended
: 360
      fire_resistance
:
        drinkable
:
          base
: 180
          extended
: 480
        splash
:
          base
: 135
          extended
: 360
      poison
:
        drinkable
:
          base
: 45
          II
: 22
          extended
: 120
        splash
:
          base
: 33
          II
: 16
          extended
: 90
      night_vision
:
        drinkable
:
          base
: 180
          extended
: 480
        splash
:
          base
: 180
          extended
: 480
      weakness
:
        drinkable
:
          base
: 90
          extended
: 240
        splash
:
          base
: 90
          extended
: 240
      strength
:
        drinkable
:
          base
: 180
          II
: 90
          extended
: 480
        splash
:
          base
: 135
          II
: 67
          extended
: 360
      slowness
:
        drinkable
:
          base
: 90
          extended
: 240
        splash
:
          base
: 67
          extended
: 180
      jump
:
        drinkable
:
          base
: 180
          II
: 90
          extended
: 480
        splash
:
          base
: 135
          II
: 67
          extended
: 360
      water_breathing
:
        drinkable
:
          base
: 180
          extended
: 480
        splash
:
          base
: 135
          extended
: 360
      invisibility
:
        drinkable
:
          base
: 180
          extended
: 480
        splash
:
          base
: 135
          extended
: 360
      luck
:
        drinkable
:
          base
: 300
          extended
: 300
        splash
:
          base
: 300
          extended
: 300
      slow_falling
:
        drinkable
:
          base
: 90
          extended
: 240
        splash
:
          base
: 90
          extended
: 240
    potion-effects
:
      # Enables classic effect math overrides (e.g., old Strength/Weakness).
      enabled
: true
      effects
:
        strength
:
          # +3.0 attack damage per level if multiplier=false & addend=true (1.8-style).
          modifier
: 3.0
          multiplier
: false
          addend
: true
        weakness
:
          # -4.0 attack damage per level (flat).
          modifier
: -4.0
          multiplier
: false
          addend
: true

  disable-modern-pvp-sounds
:
    # Suppress post-1.9 combat sounds for a 1.8 audio feel.
    enabled
: true

explosions
:
  # Enables controlled TNT/crystal/anchor logic with fine-tuned damage and packets.
  enabled
: true
  # How long (ms) an explosion record is kept for KB/damage correlation and logging.
  record-lifetime-ms
: 5000

  crystal
:
    enabled
: true
    # Radius/power roughly match vanilla but are tunable for arena balance.
    radius
: 8.0
    power
: 6.0
    fire
: false
    break-blocks
: false
    # Bonus damage per sequential detonation (stacking charges tactic).
    damage-multiplier-per-charge
: 0.1
    # Packet emulation options for smoother cross-version visuals.
    packets-enabled
: true
    packets-spawn-enabled
: true
    packets-attack-enabled
: true
    packets-placement-enabled
: true
    # Visual packet radius for clients; raise for large arenas.
    packet-radius
: 16.0
    packet-destroy-radius
: 32.0

  anchor
:
    enabled
: true
    # Allows “overcharging” respawn anchors; useful for UHC/kit metas.
    overload-enabled
: true
    overload-threshold
: 4
    radius
: 0.5
    power
: 5.0
    fire
: false
    break-blocks
: false
    damage-multiplier-per-charge
: 0.1

optimized-potions
:
  # Rewrites thrown potion physics for consistent, skill-based throws.
  enabled
: true
  model
:
    legacy
:
      # Speeds/drag/randomness tuned to behave like older versions.
      speed
: 0.5
      randomness-x
: 0.0074999998
      randomness-y
: 0.0074999998
      randomness-z
: 0.0074999998
      gravity-x
: 0.0
      gravity-y
: 0.05
      gravity-z
: 0.0
      drag-horizontal
: 1.0
      drag-vertical
: 1.0
      max-life-ticks
: 200
      splash-radius
: 4.0
      # SQUARE distributes evenly; GAUSS is more center-weighted.
      splash-shape
: SQUARE
      splash-gauss-sigma
: 0.5
    custom
:
      # Alternative “modern-feeling” profile with faster bottles.
      speed
: 1.0
      randomness-x
: 0.02
      randomness-y
: 0.02
      randomness-z
: 0.02
      gravity-x
: 0.0
      gravity-y
: 0.03
      gravity-z
: 0.0
      drag-horizontal
: 0.98
      drag-vertical
: 0.99
      max-life-ticks
: 300
      splash-radius
: 3.0
      splash-shape
: LINEAR
      splash-gauss-sigma
: 1.0
    self
:
      # If true, drink/splash near yourself applies full effect past threshold angle.
      full-intensity-on-threshold
: true
      # Angle/velocity threshold (0..1) to treat as “self” usage.
      threshold
: 0.75
      # Area near your feet considered “self splash”.
      radius
: 0.5

lag-switch-detection
:
  # Experimental: detects extreme network manipulation (keepalive/transaction variance).
  enabled
: false
  keepalive
:
    enabled
: true
  transaction
:
    enabled
: true
  # Minimum samples to learn a stable baseline.
  min-baseline-samples
: 20
  # Absolute ping ceiling tolerated (ms) before suspicion.
  max-ping-ms
: 1200
  # Sensitivity multipliers; higher = stricter.
  stddev-multiplier
: 3.0
  mad-multiplier
: 3.0
  # Sliding window for evaluating recent behavior.
  sample-window-size
: 50
  violation-window-seconds
: 60
  violation-threshold
: 5
  punishment
:
    # HIDE = silently hide player from combat; KICK/BAN available if hooked externally.
    method
: HIDE
    # How often to re-check and clear punishment if conditions improve.
    check-interval-seconds
: 5

external-support
:
  # Client-side integrations: toggles only impact features your server actually negotiates.
  animatium
:
    enabled
: true
    features
:
      # Penalize “air-swing” misses to discourage spam clicking (if the client reports).
      miss-penalty
: true
      # Allows holding left-click to use items without interrupting swing on supported clients.
      left-click-item-usage
: true
  lunar
:
    enabled
: true
    features
:
      miss-penalty
: true
  badlion-client
:
    enabled
: true
    features
:
      miss-penalty
: true
 

Code (YAML):
messages:
  prefix
: '&8 [&6MK&8 ]'
  only-for-players
: ' %prefix% &4Only players can perform this command&8.'
  cannot-perform-command
: ' %prefix% &4You can''t perform this command&8!'
  player-not-found
: ' %prefix% &cThat player is not found&8.'
  anchor-unavailable
: ' %prefix% &cAnchor charging was disabled.'
  no-permission
: '&cNo permission.'
commands
:
  playerfeature
:
    usage
: '&cUsage : /playerfeature <player> <feature> <true|false|profile_name>'
    no-permission
: '&cYou do not have permission to use this command.'
    features
: '&eFeatures : %features%'
    invalid-feature
: '&cInvalid feature. Use : %features%'
    current-value
: '&eCurrent value of %feature% for %target%: &a%value%'
    profile-fallback
: '&cProfile '' %profile%'' does not exist. Falling back to default:
      %default_profile%'
    updated
: '&aUpdated %feature% for %target% to %value%.'
    invalid-boolean
: '&cInvalid value. Use true or false.'
  moderncombat
:
    reload-success
: '&aConfigs were reloaded.'
  knockback
:
    usage
:
    - '&cUsage
: /knockback <create|edit|delete|list|reload|default|gui>'
    - '&7 ( no args or ''gui'' opens the GUI; you can do everything via args too )'
    disabled
: '&cCustom Knockback is disabled.'
    assign-profile-instructions
:
   - '&cTo assign a profile to a player, use:'
    - '&e/playerfeature <player> knockback-profile <profile>'
    profile-exists
: '&cProfile '' %profile%'' already exists.'
    profile-created
: '&aCreated new knockback profile '' %profile%''.'
    profile-not-found
: '&cProfile '' %profile%'' not found.'
    profile-does-not-exist
: '&cProfile '' %profile%'' does not exist.'
    invalid-key
: '&cInvalid key '' %key%''.'
    value-set
: '&aSet %key% = %value% on profile ''%profile%''.'
    profile-deleted
: '&aDeleted profile '' %profile%''.'
    reload-success
: '&aKnockback configuration reloaded.'
    set-default-success
: '&aGlobal default knockback profile is now '' %profile%''.'
    parse-error
: '&cCould not parse '' %value%'' as %type%.'
menus
:
  knockback
:
    main
:
      title
: '&eKnockback Profiles'
      list
:
        name
: '&aList All Profiles'
        lore
:
       - '&7Click to view and manage all profiles.'
      create
:
        name
: '&aCreate New Profile'
        lore
:
       - '&7Click to create a new knockback profile.'
      reload
:
        name
: '&cReload Knockback Config'
        lore
:
       - '&7Click to reload the knockback configuration.'
    list
:
      title
: '&eKnockback Profiles List'
      action-lore
:
     - '&aLeft-click &7to &aedit&7.'
      - '&cRight-click &7to &cdelete&7.'
      - '&eMiddle-click &7to &eSet as Default&7.'
      info-header
: '&8Profile info:'
      info-format
: '&7 %key%: &f%value%'
      default-suffix
: '&6★ &eThis is the &lDEFAULT &eprofile.'
      item-default-name
: '&a★ &f %profile% &7(&eDEFAULT&7)'
      item-name
: '&e %profile%'
    create
:
      title
: '&eCreate Knockback Profile'
      anvil-text
: Enter profile name
      anvil-title
: Profile Name
      invalid-name
: Type a valid name
      duplicate-name
: Profile already exists!
      success-chat
: '&aProfile %profile% created!'
      success-title
: ''
      success-subtitle
: '&a %profile% &awas created'
      success-actionbar
: '&aProfile %profile% created!'
      confirm
:
        name
: '&aConfirm'
        lore
:
       - '&7Click to create a new profile and set its name.'
      cancel
:
        name
: '&cCancel'
        lore
:
       - '&7Click to cancel.'
    edit
:
      title
: '&eEditing Profile : %profile%'
      updated
: '&aUpdated %key% to: %value%'
      invalid-value
: '&cPlease enter a valid value for %key%.'
      invalid-option
: Only 'players', 'mobs', or ' all' allowed.
      unsupported
: '&cThis setting cannot be edited via GUI.'
      invalid-format
: Invalid format! Try again.
      invalid-input
: Invalid value! Try again.
      invalid-type
: Invalid setting type.
      prompt
: Enter new value for %key%
      title-prompt
: Enter new value for %key%
      item-name
: '&e %key%'
      item-lore
:
      - '&7Current Value
: &f%value%'
      - '&aClick to edit.'
    delete
:
      title
: '&cDelete Knockback Profile'
      success
: '&cProfile %profile% deleted!'
      confirm
:
        name
: '&aYes'
        lore
:
       - '&7Click to confirm deletion of profile &e %profile%'
      cancel
:
        name
: '&cNo'
        lore
:
       - '&7Click to cancel deletion.'
 

Code (YAML):
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

enchanted_golden_apple
:
  cooldown
: 120
  message
: "You cannot eat another Enchanted Golden Apple for %time%."
  action-bar
: "You must wait %time% before using Chorus Fruit again."
  event
: consume

chorus_fruit
:
  cooldown
: 15
  message
: "You must wait %time% before using Chorus Fruit again."
  action-bar
: "You must wait %time% before using Chorus Fruit again."
  event
: consume

totem_of_undying
:
  cooldown
: 60
  message
: "You cannot be resurrected for %time% after using a Totem."
  action-bar
: "You must wait %time% before using Chorus Fruit again."
  event
: resurrect
 

Code (YAML):
defaultProfile : default

profiles
:
  default
:
    knockbackHorizontal
: 0.4 # Base horizontal knockback multiplier when hit
    knockbackVertical
: 0.4 # Base vertical knockback multiplier when hit
    knockbackVerticalLimit
: 0.4 # Max allowed vertical knockback (caps upward motion)
    knockbackExtraHorizontal
: 0.5 # Extra horizontal knockback when sprinting or when bonus is calculated
    knockbackExtraVertical
: 0.1 # Extra vertical knockback when sprinting or when bonus is calculated
    knockbackEnchantMultiplier
: 1.0 # Multiplier for knockback enchantment effect
    knockbackFriction
: 0.6 # Knockback friction (divides knockback to reduce its strength)
    projectileKnockbackHorizontal
: 0.4 # Horizontal knockback from projectiles
    projectileKnockbackVertical
: 0.4 # Vertical knockback from projectiles
    explosionKnockbackHorizontal
: 0.4 # Horizontal knockback from explosions
    explosionKnockbackVertical
: 0.4 # Vertical knockback from explosions
    explosionKnockbackStraight
: true # If true, explosion knockback uses direct line force
    netheriteKnockbackResistance
: true # If true, netherite armor gives resistance to knockback
    knockbackNonPlayerEntities
: false # If true, you can give kb to mobs
    stopSprint
: true # If true, player sprint is stopped after attacking
    cancelDraggingIn
: players # Prevents item dragging in inventories. Options: players, mobs, all
    arrowSpeedMultiplier
: 1.0 # Speed multiplier for arrows
    fishingRodSpeedMultiplier
: 1.0 # Speed multiplier for fishing rods
    enderPearlSpeedMultiplier
: 1.0 # Speed multiplier for ender pearls
    otherProjectileSpeedMultiplier
: 1.0 # Speed multiplier for other projectiles (e.g. eggs, snowballs)
    combatCooldown
: false # If true, enables 1.9+ cooldown system for combat
    attackSpeed
: 40 # Controls attack speed (higher = faster attacks). 4 = 1.9 default, 40+ = 1.8 feel
    combatHitDelay
: 20 # Delay (in ticks) between registering hits. 0 = instant, 20 = classic delay

  vanilla_legacy
:
    knockbackHorizontal
: 0.4
    knockbackVertical
: 0.4
    knockbackVerticalLimit
: 0.4
    knockbackExtraHorizontal
: 0.5
    knockbackExtraVertical
: 0.1
    knockbackEnchantMultiplier
: 1.0
    knockbackFriction
: 0.6
    projectileKnockbackHorizontal
: 0.4
    projectileKnockbackVertical
: 0.4
    explosionKnockbackHorizontal
: 0.4
    explosionKnockbackVertical
: 0.4
    explosionKnockbackStraight
: true
    netheriteKnockbackResistance
: true
    knockbackNonPlayerEntities
: false
    stopSprint
: true
    cancelDraggingIn
: players
    arrowSpeedMultiplier
: 1.0
    fishingRodSpeedMultiplier
: 1.0
    enderPearlSpeedMultiplier
: 1.0
    otherProjectileSpeedMultiplier
: 1.0
    combatCooldown
: false
    attackSpeed
: 40
    combatHitDelay
: 20

  vanilla_modern
:
    knockbackHorizontal
: 0.4
    knockbackVertical
: 0.4
    knockbackVerticalLimit
: 0.4
    knockbackExtraHorizontal
: 0.5
    knockbackExtraVertical
: 0.1
    knockbackEnchantMultiplier
: 1.0
    knockbackFriction
: 0.6
    projectileKnockbackHorizontal
: 0.4
    projectileKnockbackVertical
: 0.4
    explosionKnockbackHorizontal
: 0.4
    explosionKnockbackVertical
: 0.4
    explosionKnockbackStraight
: true
    netheriteKnockbackResistance
: true
    knockbackNonPlayerEntities
: false
    stopSprint
: true
    cancelDraggingIn
: players
    arrowSpeedMultiplier
: 1.0
    fishingRodSpeedMultiplier
: 1.0
    enderPearlSpeedMultiplier
: 1.0
    otherProjectileSpeedMultiplier
: 1.0
    combatCooldown
: true
    attackSpeed
: 4
    combatHitDelay
: 20

  kohi
:
    knockbackHorizontal
: 0.35
    knockbackVertical
: 0.35
    knockbackVerticalLimit
: 0.4
    knockbackExtraHorizontal
: 0.425
    knockbackExtraVertical
: 0.085
    knockbackEnchantMultiplier
: 1.0
    knockbackFriction
: 2.0
    projectileKnockbackHorizontal
: 0.4
    projectileKnockbackVertical
: 0.4
    explosionKnockbackHorizontal
: 0.4
    explosionKnockbackVertical
: 0.4
    explosionKnockbackStraight
: true
    netheriteKnockbackResistance
: false
    knockbackNonPlayerEntities
: true
    stopSprint
: true
    cancelDraggingIn
: players
    arrowSpeedMultiplier
: 1.0
    fishingRodSpeedMultiplier
: 1.0
    enderPearlSpeedMultiplier
: 1.0
    otherProjectileSpeedMultiplier
: 1.0
    combatCooldown
: false
    attackSpeed
: 4
    combatHitDelay
: 20

  badlion
:
    knockbackHorizontal
: 0.35
    knockbackVertical
: 0.35
    knockbackVerticalLimit
: 0.4
    knockbackExtraHorizontal
: 0.425
    knockbackExtraVertical
: 0.085
    knockbackEnchantMultiplier
: 1.0
    knockbackFriction
: 2.0
    projectileKnockbackHorizontal
: 0.4
    projectileKnockbackVertical
: 0.4
    explosionKnockbackHorizontal
: 0.4
    explosionKnockbackVertical
: 0.4
    explosionKnockbackStraight
: true
    netheriteKnockbackResistance
: false
    knockbackNonPlayerEntities
: true
    stopSprint
: true
    cancelDraggingIn
: players
    arrowSpeedMultiplier
: 1.0
    fishingRodSpeedMultiplier
: 1.0
    enderPearlSpeedMultiplier
: 1.0
    otherProjectileSpeedMultiplier
: 1.0
    combatCooldown
: false
    attackSpeed
: 4
    combatHitDelay
: 20

  lunar
:
    knockbackHorizontal
: 0.35
    knockbackVertical
: 0.35
    knockbackVerticalLimit
: 0.4
    knockbackExtraHorizontal
: 0.425
    knockbackExtraVertical
: 0.085
    knockbackEnchantMultiplier
: 1.0
    knockbackFriction
: 2.0
    projectileKnockbackHorizontal
: 0.4
    projectileKnockbackVertical
: 0.4
    explosionKnockbackHorizontal
: 0.4
    explosionKnockbackVertical
: 0.4
    explosionKnockbackStraight
: true
    netheriteKnockbackResistance
: false
    knockbackNonPlayerEntities
: true
    stopSprint
: true
    cancelDraggingIn
: players
    arrowSpeedMultiplier
: 1.0
    fishingRodSpeedMultiplier
: 1.0
    enderPearlSpeedMultiplier
: 1.0
    otherProjectileSpeedMultiplier
: 1.0
    combatCooldown
: false
    attackSpeed
: 4
    combatHitDelay
: 20

[​IMG]

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

[​IMG]
public class ModernCombatAPI {

private static KnockbackManager knockbackManager;
private static CooldownManager cooldownManager;
private static AimAssistManager aimAssistManager;
private static HitDetectionManager hitDetectionManager;

// ─── SETTER METHODS ────────────────────────────────────────────────

public static void setKnockbackManager(KnockbackManager manager) {
knockbackManager = Objects.requireNonNull(manager, "KnockbackManager cannot be null");
}

public static void setCooldownManager(CooldownManager manager) {
cooldownManager = Objects.requireNonNull(manager, "CooldownManager cannot be null");
}

public static void setAimAssistManager(AimAssistManager manager) {
aimAssistManager = Objects.requireNonNull(manager, "AimAssistManager cannot be null");
}

public static void setHitDetectionManager(HitDetectionManager manager) {
hitDetectionManager = Objects.requireNonNull(manager, "HitDetectionManager cannot be null");
}

// ─── GETTER METHODS ────────────────────────────────────────────────

public static KnockbackManager getKnockbackManager() {
if (knockbackManager == null) {
throw new IllegalStateException("KnockbackManager is not initialized");
}
return knockbackManager;
}

public static CooldownManager getCooldownManager() {
if (cooldownManager == null) {
throw new IllegalStateException("CooldownManager is not initialized");
}
return cooldownManager;
}

public static AimAssistManager getAimAssistManager() {
if (aimAssistManager == null) {
throw new IllegalStateException("AimAssistManager is not initialized");
}
return aimAssistManager;
}

public static HitDetectionManager getHitDetectionManager() {
if (hitDetectionManager == null) {
throw new IllegalStateException("HitDetectionManager is not initialized");
}
return hitDetectionManager;
}

// ─── UTILITY METHODS ────────────────────────────────────────────────

/**
* Checks if Aim Assist is enabled.
*
* @Return true if AimAssistManager is initialized; false otherwise.
*/
public static boolean isAimAssistEnabled() {
return aimAssistManager != null;
}

/**
* Checks if Hit Detection is enabled.
*
* @Return true if HitDetectionManager is initialized; false otherwise.
*/
public static boolean isHitDetectionEnabled() {
return hitDetectionManager != null;
}

// ─── EXISTING API METHODS FOR KNOCKBACK AND COOLDOWN ────────────────

public static void changeKnockback(Player player, String profileName) {
if (player == null) {
throw new IllegalArgumentException("Player cannot be null");
}
if (profileName == null) {
throw new IllegalArgumentException("Profile name cannot be null");
}
if (knockbackManager != null) {
knockbackManager.setPlayerProfile(player, profileName);
} else {
throw new IllegalStateException("KnockbackManager is not initialized");
}
}

public static void changeKnockback(String profileName) {
if (profileName == null) {
throw new IllegalArgumentException("Profile name cannot be null");
}
if (knockbackManager != null) {
knockbackManager.setGlobalProfile(profileName);
} else {
throw new IllegalStateException("KnockbackManager is not initialized");
}
}

public static void addCooldown(Player player, Material item, long duration) {
if (player == null) {
throw new IllegalArgumentException("Player cannot be null");
}
if (item == null) {
throw new IllegalArgumentException("Material cannot be null");
}
if (duration <= 0) {
throw new IllegalArgumentException("Duration must be positive");
}
if (cooldownManager != null) {
cooldownManager.addCooldown(player, item, duration);
} else {
throw new IllegalStateException("CooldownManager is not initialized");
}
}

public static boolean hasCooldown(Player player, Material item) {
if (player == null) {
throw new IllegalArgumentException("Player cannot be null");
}
if (item == null) {
throw new IllegalArgumentException("Material cannot be null");
}
if (cooldownManager != null) {
return cooldownManager.hasCooldown(player, item);
} else {
throw new IllegalStateException("CooldownManager is not initialized");
}
}

public static void checkCooldown(Player player, Material item) {
if (player == null) {
throw new IllegalArgumentException("Player cannot be null");
}
if (item == null) {
throw new IllegalArgumentException("Material cannot be null");
}
if (cooldownManager != null) {
cooldownManager.checkCooldown(player, item);
} else {
throw new IllegalStateException("CooldownManager is not initialized");
}
}

// ─── AIM ASSIST API METHODS ───────────────────────────────────────────

public static void processAimAssist(Player player) {
if (player == null) {
throw new IllegalArgumentException("Player cannot be null");
}
if (aimAssistManager != null) {
aimAssistManager.processAimAssistForPlayer(player);
} else {
throw new IllegalStateException("AimAssistManager is not initialized");
}
}

public static LivingEntity getAimAssistTarget(Player player) {
if (player == null) {
throw new IllegalArgumentException("Player cannot be null");
}
if (aimAssistManager != null) {
return aimAssistManager.getAimAssistTarget(player);
} else {
throw new IllegalStateException("AimAssistManager is not initialized");
}
}
}

ServerSidePlayerHitEvent custom event.
More things will be added to the API!

[​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: 46
First Release: Jun 12, 2024
Last Update: Nov 9, 2025
Category: ---------------
All-Time Rating:
5 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings