Anti Shield Ghost v1.2
Eliminates Ghost Shields And Blocking State Desync Fix


AntiShieldGhost
Eliminates Ghost Shields. Blocking State Desync Fix.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Block Start / End Fix ◆ Shield Equip / Unequip Fix ◆ Folia Support ◆ Paper 1.21.x - 26.2 ◆ API + Events
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What AntiShieldGhost Solves
Minecraft's client-server model has a known weakness: the blocking state is part of the living-entity metadata plus the arm pose, and after a shield state change the server and clients can disagree on that metadata. Other clients see a ghost shield - raised when it is not, or missing while the player is actively blocking (Mojira MC-304423, MC-86252). Opponents cannot tell when the shield is actually up.
AntiShieldGhost fixes this. It detects every blocking-state transition - start, end, and shield equip/unequip - and re-renders the player entity to every viewer. The result is a shield that always looks correct for everyone.
Three Fix Triggers. Independently Configurable.
Each trigger has its own toggle, delay-ticks, and optional sub-settings.
Each trigger can be disabled independently without touching the others.
◆ Block Start
- Detected instantly on damage while blocking, so viewers see the raised shield immediately (Mojira MC-304423).
◆ Block End
- Detected by a small periodic state scanner (Bukkit has no "stopped blocking" event), clearing the stuck raised-shield desync (Mojira MC-86252).
◆ Shield Equip / Unequip
- Detected by the same scanner when a shield is put on or taken off the offhand.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Core Systems
◆ Reliable Re-render
- Uses Paper's getTrackedBy() API to hide and re-show the player to every viewer
- Scheduled on the viewer's own region thread - cross-region and Folia safe
- Also refreshes the surrounding chunks and the player's inventory
◆ State Tracker with Anti-Spam
- Deduplicates transitions - one refresh per actual state change
- Anti-spam window prevents flicker from rapid block toggling
- Cleans up automatically on player quit
◆ Throttle System
- Per-reason minimum ticks between fixes for the same player+reason pair
- Prevents spam from rapid blocking
◆ Exemption System
- Permission-based: grant antishieldghost.exempt to skip specific players
- UUID whitelist for hard-coded exemptions
- NPC auto-detection via Citizens and ModelEngine hooks - NPCs are never processed
◆ World Scoping
- Blacklist or whitelist mode for worlds
- Disable the plugin in specific worlds (e.g., event worlds, lobbies)
◆ Statistics
- Per-player fix counters for every reason, visible via /antishieldghost stats
- Optional persistence to file on a configurable interval
- PlaceholderAPI expansion for scoreboards and holograms
◆ Developer API
- AntiShieldGhostAPI registered via Bukkit ServicesManager for easy access
- GhostFixEvent - cancellable, fired before a fix. Let other plugins veto fixes
- GhostFixedEvent - fired after a fix completes
- refreshPlayer(), refreshSurroundings(), getStats(), isExempt() - full API surface
◆ Multi-Language Support
- Built-in: English and Polish. Add custom languages by dropping a file in /lang/
- All messages use MiniMessage with full hex color and gradient support
- Language switch is a single line in config.yml
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How AntiShieldGhost Compares
| Feature | AntiShieldGhost | Manual / Simple Plugins |
| Trigger coverage | Block start, block end, equip/unequip | Blocking only or nothing |
| Fix method | getTrackedBy() hide/show re-render + chunk refresh | Blind chunk resend or none |
| Spam protection | Per-reason throttle, anti-spam toggle, exemption, world scope | None or a basic global cooldown |
| Folia support | Fully supported via entity scheduler | Most break on Folia |
| API & events | Bukkit ServicesManager API + 2 events | No API surface |
| NPC handling | Citizens and ModelEngine auto-skip | Not handled |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Who This Is For
- PvP servers Shield timing decides fights. A ghost shield is a lost duel. AntiShieldGhost keeps blocking state correct for every opponent.
- Survival and SMP Players shielding against mobs will never look like they are open when they are actually blocking.
- Network owners Works on any server running Paper 1.21.x through 26.2. Full /antishieldghost reload support, Folia-compatible out of the box. Works alongside any other plugin.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Technical Specs
| Server | Paper 1.21.x - 26.2, Java 25 |
| Dependencies | None. All features work standalone. |
| Soft dependencies | PlaceholderAPI, Citizens, ModelEngine |
| Languages | en_US, pl_PL (extensible) |
| Analytics | bStats, optional, toggle in config |
| Threading | Folia-safe entity scheduler. Async detection, sync execution |
◆ Commands
| Command | Description | Permission |
| /antishieldghost info | Shows plugin version, module status, and hook availability | none |
| /antishieldghost reload | Reloads config and language files without server restart | antishieldghost.admin |
| /antishieldghost refresh [player] | Manually refreshes a player's tracker state | antishieldghost.refresh |
| /antishieldghost fixall | Refreshes all online players at once | antishieldghost.admin |
| /antishieldghost stats [player] | Displays per-reason fix statistics for a player | antishieldghost.stats |
| /antishieldghost debug | Shows live tracker state for debugging desync issues | antishieldghost.admin |
◆ Permissions
| Permission | Description | Default |
| antishieldghost.admin | Access to admin commands (reload, fixall, debug) | op |
| antishieldghost.refresh | Manually refresh players | op |
| antishieldghost.stats | View fix statistics | true |
| antishieldghost.exempt | Player is skipped by all AntiShieldGhost actions | false |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Get AntiShieldGhost
Ghost shields are not a client-side issue. They are a server-side desync with a server-side fix.
Three triggers. Reliable re-render. Zero ghost shields. One plugin.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Related Products (1)
Anti Totem Ghost
Statistics
Views
Purchases
Downloads
File size
Published
Updated
Info
Share & Earn
Share and earn part of the profits, an estimated €0.4 per product sale.