
Fine‑tune Minecraft combat, movement, and item balance without breaking your server. OldCombatMechanics is a free, open‑source toolkit for Spigot & Paper that lets you mix 1.8‑style snappiness with modern features, per world and per player. It is built for PvP networks, minigames, BedWars/SkyWars-style games, duels, KitPvP, practice arenas, and mixed PvP/PvE worlds that need different combat rules in different places.
Why servers pick OCM ✨
- 🧩 Modular: enable only what you need: cooldowns, tool damage, knockback, shields, potions, reach, sounds, more.
- 🚀 Performant: lean listeners only enabled as needed; reflection lookups are cached and recurring tasks are minimised (shared where possible) to keep tick time low on busy PvP servers.
- 🗺️ Modesets: ship different rules for different worlds or players; perfect for PvP networks, BedWars/SkyWars-style minigames, duels, KitPvP, FFA, practice arenas, and mixed PvP/PvE.
- 🔌 Plugin-friendly API: integrate OCM with game logic by applying session-only per-player module overrides, managing player modesets, and checking whether modules are effectively enabled.
- ⏪ Backwards‑friendly: runs on Java 8+, supports 1.9 to latest; integrates cleanly with PlaceholderAPI and PacketEvents.
- ✅ Tested for you: live integration tests run real Paper servers across multiple versions every build.
- 💸 Zero cost: fully open source, optional basic telemetry (bStats only), no paywalls.
Quick start ⚡
- Drop the jar into
plugins/(Spigot or Paper-derivatives 1.9+). - Restart and edit
config.ymlto pick your modules and modesets. - Use
/ocm reloadto apply changes instantly. - Hand players
/ocm modeset <name>to let them choose their ruleset.
🧰 Modesets
- Per-player/per-world presets that decide which features are active; each world has an allowed list and a default modeset.
- Let players pick (
/ocm modeset <name>) to run, for example, 1.8-style PvP in an arena world while keeping vanilla rules in survival.
🏟 Built for minigames and PvP networks
- Run old-style combat in competitive arenas while keeping modern mechanics in lobbies, survival, or event worlds.
- Tailor rules for BedWars, SkyWars, duels, KitPvP, FFA, practice arenas, tournaments, and temporary events without splitting your network across extra plugins.
- Keep configuration readable for staff: combine world defaults, player-selected modesets, and targeted plugin overrides for special match phases.
🔌 Developer API
- OCM registers its API through Bukkit's services manager, so other plugins can look it up without depending on internal implementation classes.
- The current API supports session-only per-player module overrides, player modeset queries/changes, and events for reacting to OCM state changes.
- Plugins can also check whether a module is effectively enabled for a player after world rules, player choices, and overrides have been considered.
- Overrides are not persisted across restarts or reconnects; reapply them from your game state when needed.
- See API.md for dependency setup,
plugin.ymlguidance, method details, and Java/Kotlin examples.
⚙ Configurable Features
Features are grouped in modules as listed below, and can be individually configured and disabled. Disabled modules will have no impact on server performance.
⚔ Combat
Tweak timing, damage, and reach.
- Attack cooldown: adjust or remove 1.9+ cooldown
- Attack frequency: set global hit delay
- Tool damage: pre-1.9 weapon values
- Attack range (Paper 1.21.11+): 1.8-style reach
- Critical hits: control crit multiplier
- Player regen: tune regen rates
🤺 Armour
Balance defence and wear.
- Armour strength: scale armour protection
- Armour durability: change durability loss
🛡 Swords & Shields
Control block and sweep behaviour.
- Sword blocking: restore old right-click block; on Paper 1.21.2+ we also add the native sword blocking animation via the consumable component
- Shield damage reduction: scale shield protection
- Sword sweep: enable or disable sweeps
- Sword sweep particles: hide or show sweep visuals
🌬 Knockback
Shape knockback per source.
- Player knockback: adjust PvP knockback
- Fishing knockback: fishing-rod knockback
- Fishing rod velocity: pull speed
- Projectile knockback: arrows and other projectiles
🧙 Gapples & Potions
Change consumable power.
- Golden apple crafting and effects: notch and normal
- Potion effects and duration: old-style values
- Chorus fruit: teleport behaviour and range
❌ New feature disabling
Toggle later-version mechanics.
- Item crafting: block selected recipes
- Offhand: disable offhand use
- New attack sounds: mute new swing sounds
- Enderpearl cooldown: enable or remove cooldown
- Brewing stand refuel: alter fuel use
- Burn delay: adjust fire tick delay
🔌 Compatibility & Testing
- OCM targets Spigot 1.9+ and runs on Java 8 and up.
- We stick to Spigot/Paper APIs for forward compatibility; NMS/reflection is used only when necessary.
- Integration tests boot real servers on 1.9.4, 1.12, 1.19.2, 1.21.11, and 26.1.2 each build to verify behaviour.
- Most plugins work fine with OCM. Targeted compatibility includes PlaceholderAPI (see wiki) and MythicMobs no-knockback damage skills with old-player-knockback.
🧾 Licence
- Source code in this repository is under the Mozilla Public License 2.0 (MPL‑2.0).
- Pre-built jars bundle PacketEvents (GPLv3). Those binary distributions are provided under GPLv3 terms due to the included dependency.
- If you build a jar without PacketEvents, you may distribute that build under MPL‑2.0, subject to its terms.
⚡ Development Builds
Oftentimes a particular bug fix or feature has already been implemented, but a new version of OCM has not been released yet. You can find the most up-to-date version of the plugin on Hangar.
🤝 Contributions
If you are interested in contributing, please check this page first.
🍺 Donations
If this project has helped you in any way, consider sending over a beer. The project will always remain free!
This plugin uses bStats metrics. You can disable it in the bStats plugin folder.



