MaceGuard
Anti-cheat specifically made for preventing mace hacks such as MaceDMG
MaceGuard
⚡ MaceGuard
🎯 What This Does
Stops MaceDMG hack
How it works: Calculates expected damage server-side → Compares to actual → Bans after 3 violations
More accurate bans - using server side fall calculations additionaly supports with density and wind burst enchantments, windcharge jumps, jump boost potions and enderpearl catches. Check config below for more details.
📦 Installation
1. Download MaceGuard-1.0.0.jar 2. Stop server 3. Copy to plugins/ folder 4. Start server
🔑 Permissions
Moderators - see alerts - maceguard.alerts - maceguard.staff
Admins - full access - maceguard.*
Via Luckperms
- /lp group moderator permission set maceguard.alerts true - /lp group admin permission set maceguard.* true
📝 Config
Spoiler
``` ##############################################
MaceGuard Configuration File #
Advanced Mace Damage Validation System #
##############################################
Plugin prefix for messages
prefix: "&c[MaceGuard]"
Damage Validation Settings
damage-validation:
Enable the damage validation system
enabled: true
Tolerance multiplier for legitimate damage variations
1.15 = allow up to 15% over expected damage (for lag, rounding errors)
Lower = stricter, Higher = more lenient
tolerance-multiplier: 1.15
Minimum fall distance required for smash attack bonus
Vanilla is 1.5 blocks, we use 1.3 to account for client-server sync
min-fall-distance: 1.3
Maximum fall distance to track (blocks)
Set to -1 for unlimited
max-fall-distance: 256
Enable server-side fall distance calculation
HIGHLY RECOMMENDED: Keep this true to prevent spoofing
server-side-calculation: true
Recalculate damage server-side (cancel and reapply)
If false, only logs violations but doesn't prevent damage
cancel-invalid-damage: true
Special Mechanics Tracking
mechanics:
Wind Charge detection
wind-charge: enabled: true
Time window to detect wind charge usage (ms)
detection-window: 2000
Bonus fall distance to add when detected (blocks)
bonus-fall-distance: 7.0
Ender Pearl detection
ender-pearl: enabled: true
Time window to detect ender pearl usage (ms)
detection-window: 3000
Whether to track pearl height for calculation
track-pearl-height: true
Jump Boost potion
jump-boost: enabled: true
Bonus fall distance per amplifier level (blocks)
bonus-per-level: 0.5
Wind Burst enchantment
wind-burst: enabled: true
Bonus fall distance per enchantment level (blocks)
bonus-per-level: 7.0
Track consecutive smash attacks
track-combos: true
Density Enchantment Validation
density:
Enable density enchantment validation
enabled: true
Maximum density level (vanilla is 5)
max-level: 5
Damage bonus per block fallen per level
Vanilla formula: 0.5 * level * blocks
damage-per-block-per-level: 0.5
Validate that density is actually on the weapon
verify-enchantment: true
Logging Settings
logging:
Enable logging to files
enabled: true
Log all violations
log-violations: true
Log suspicious hits (within tolerance but high)
log-suspicious: true
Log all legitimate high-damage hits for monitoring
log-high-damage: true high-damage-threshold: 50.0
Log bans
log-bans: true
Console output
console: enabled: true
Log level: INFO, WARNING, SEVERE
level: "WARNING"
File output
files: violations: "violations.log" suspicious: "suspicious.log" bans: "bans.log" high-damage: "high-damage.log"
Punishment System
punishment:
Enable automatic punishments
auto-ban: true
Maximum violations before punishment
max-violations: 3
Ban duration (requires LiteBans, AdvancedBan, or compatible plugin)
Format: #d = days, #h = hours, #m = minutes
ban-duration: "2d"
Ban reason (supports color codes with &)
ban-reason: "&c[MaceGuard] MaceDMG Exploit - Spoofed fall distance detected"
Reset violations after this time (minutes)
Set to -1 to never reset
reset-violations-after: 30
Broadcast punishments
broadcast: enabled: true message: - "&8&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - "&c⚠ &fMaceGuard &7detected &c%player% &7using mace exploit" - "&7Violations: &c%violations% &7| Excess Damage: &c%excess-damage%" - "&7Punishment: &c%duration% ban" - "&8&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
Commands to execute on punishment
%player% = player name
%uuid% = player UUID
%violations% = violation count
commands: - "tempban %player% 2d &c[MaceGuard] MaceDMG Exploit"
Add more commands as needed
- "discord send #bans %player% was banned for mace exploit"
Alerts
alerts:
Send real-time alerts to staff
enabled: true
Permission required to receive alerts
permission: "maceguard.alerts"
Alert format
format: "&c[MaceGuard] &e%player% &7attempted mace exploit! &f[VL: %vl%/%max-vl%] &7Expected: &f%expected%, &7Dealt: &c%actual%"
Hover message (Paper servers only)
hover: - "&7Player: &f%player%" - "&7Violation: &f%vl%/%max-vl%" - "&7Expected Damage: &f%expected%" - "&7Actual Damage: &c%actual%" - "&7Excess: &c%excess%" - "&7Fall Distance: &f%fall-distance% blocks" - "&7Wind Charge: %wind-charge%" - "&7Ender Pearl: %ender-pearl%" - "" - "&eClick to teleport"
Click action
click-command: "/tp %player%"
Send alerts to Discord webhook
discord: enabled: false webhook-url: "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE"
Minimum violations before sending to Discord
min-violations: 2
Embed color (decimal)
color: 16711680 # Red
Player Warnings
warnings:
Send warnings to violating players
enabled: true
Warning message
message: "&c[MaceGuard] &7Invalid mace damage detected! &c[%vl%/%max-vl%]"
Title notification
title: enabled: true title: "&c⚠ Warning ⚠" subtitle: "&7Mace exploit detected" fade-in: 10 stay: 40 fade-out: 10
Send warning at specific violation thresholds
thresholds: - 1 - 2 - 3
Exemptions
exemptions:
Bypass permission
bypass-permission: "maceguard.bypass"
Exempt creative mode players
exempt-creative: true
Exempt spectator mode players
exempt-spectator: true
Exempt players in specific worlds
exempt-worlds: - "creative_world" - "test_world"
Exempt players in specific regions (requires WorldGuard)
exempt-regions: - "spawn" - "safezone"
Whitelist specific players (UUID or username)
whitelisted-players:
- "069a79f4-44e9-4726-a5be-fca90e38aaf5"
- "Notch"
Performance Optimization
performance:
Run calculations asynchronously where possible
async-processing: true
Thread pool size for async tasks
thread-pool-size: 2
Cache player data for this many ticks (20 ticks = 1 second)
cache-duration-ticks: 100
Maximum players to check per tick (prevents lag spikes)
max-checks-per-tick: 50
Cleanup interval for old data (ticks)
cleanup-interval-ticks: 6000 # 5 minutes
Cleanup threshold (remove data older than this in ms)
cleanup-threshold-ms: 300000 # 5 minutes
Debug Settings
debug:
Enable debug mode (verbose console output)
enabled: false
Debug specific players
debug-players:
- "TestPlayer123"
Show expected vs actual damage in console
show-damage-calculations: false
Track all mace hits (even legitimate ones)
track-all-hits: false
Integration with other plugins
integration:
Vulcan Anti-Cheat integration
vulcan: enabled: true
Send violations to Vulcan's log
log-to-vulcan: true
GrimAC integration
grim: enabled: true
Send violations to Grim's log
log-to-grim: true
LiteBans / AdvancedBan
ban-plugin:
Auto-detect ban plugin (LiteBans, AdvancedBan, vanilla)
auto-detect: true
Force specific plugin: "litebans", "advancedban", "vanilla"
force: "auto"
Statistics Tracking
statistics:
Track player mace statistics
enabled: true
Track legitimate high-damage hits
track-high-damage: true
Track total mace hits per player
track-hit-count: true
Track average damage per player
track-average-damage: true
Advanced Options
advanced:
Packet validation level (higher = stricter, more CPU)
Values: 1 (low), 2 (medium), 3 (high)
validation-level: 2
Enable packet-level validation (requires ProtocolLib)
packet-validation: enabled: false
This is experimental and may cause issues
use-protocollib: false
Fall distance calculation method
"server" = server-side only (most secure)
"client" = trust client (not recommended)
"hybrid" = server with client validation
calculation-method: "server"
Maximum violations to store in memory
max-violations-stored: 1000
DO NOT EDIT
config-version: 1.0.0 ```
Why this plugin ❓
- Server side calculation based, due to which chances of bypass is minimal.