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!
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.
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!
Custom knockback profiles with a GUI and command editor.
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.
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
Use the latest ProtocolLib build appropriate for your server version.
Place the jar in
Code (Text):
/plugins/
.
Install ModernCombat.
Place
Code (Text):
ModernCombat-<version>.jar
in
Code (Text):
/plugins/
.
Start the server once and let it generate its files.
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.
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
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)
Stop the server.
Replace the old jar in
Code (Text):
/plugins/
.
Start the server once to let new keys generate.
Stop it again and review
Code (Text):
config.yml
,
Code (Text):
knockback.yml
,
Code (Text):
cooldowns.yml
and
Code (Text):
messages.yml
.
Start normally.
Tip: keep a backup of the
Code (Text):
/plugins/ModernCombat/
folder before major updates.
First boot checklist (recommended before going live)
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.
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
.
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.
Then enable only the extra systems you actually want: hit detection, block-hit, pearls, crits, oldpvp, custom item behaviors, cooldowns, explosions, aim assist, etc.
Test melee, projectiles, pearls, potions, totems, shields, and region restrictions before opening the server to players.
If you use WorldGuard, verify both the world
Code (Text):
pvp
state and any custom ModernCombat flags in your key arenas / spawn regions.
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.
test.bytecore.hr - PUBLIC TEST SERVER You can request your server to be added here!
----------------------------------------------------------------------------------------------
play.kyodo.network | Kyodo Network
seiky.net | Seiky Network
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)
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
publicvoid onServerSideHit
(ServerSidePlayerHitEvent event
){ if(event.
getVictim()instanceof Player
){ // cancel hits in your own custom arena logic // event.setCancelled(true); } }
@EventHandler
publicvoid onBlockInteractHit
(BlockInteractHitEvent event
){ // Example: cancel the block interaction but keep the hit // event.setCancelInteract(true); }
@EventHandler
publicvoid 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
publicboolean canPlayersDamage
(Player attacker, Player victim
){ // Return true to allow, false to deny returntrue; } });
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.
— 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
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.
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.