PacketRateLimiter
PacketRateLimiter — simple Anti-Dupe & Anti-Lag for your server. It blocks common dupe tricks and reduces lag by limiting spammy inventory packets at the network level, before the server even processes them.
Why servers use it
- Stops dupes: Limits the fast inventory actions dupers use (click, drag, drop, swap).
- Reduces lag: Smooths player packet bursts to protect TPS without hurting normal play.
- Configurable: You control refill speed and how many actions are allowed in a burst.
- Creative exempt: Players in creative mode are never rate-limited.
Actions limited
- Inventory clicks (including shift-click and number-key swaps)
- Inventory drag (cost scales with how many slots are dragged)
- Item drops (Q)
- Offhand swap (F)
Default config
limiter.refill_per_sec: 12.0
limiter.burst_capacity: 20.0
costs.click: 1.0
costs.drag_base: 1.0
costs.drag_per_4_slots: 1.0
costs.drop: 1.0
costs.swap: 1.5
messages.enabled: true
messages.deny: &cSlow down—inventory actions limited.
messages.cooldown_ms: 1500
bypass_permission: packetratelimiter.bypass
Commands & perms
/prlreload — reload config (admin permission in plugin.yml)
Bypass: packetratelimiter.bypass
Under the hood
Uses PacketEvents to intercept packets on the Netty I/O thread before they reach the server, eliminating the client-side desync (phantom item moves) that occurs when cancelling Bukkit events after the fact. Per-player token buckets in a concurrent map; cleanup on PlayerQuit; cooldown messages debounced to avoid spam.
PacketRateLimiter • Fair play, zero fuss — built for Anti-Dupe & Anti-Lag.