FP's AntiFreecam
1.5.3-c550cc8Protect your server from Freecam, X-Ray, and ESP. Inspired by the Donut SMP
1.5.3-c550cc8latestFP's AntiFreecam 1.5.3-c550cc8last week FPAntiFreeCam 1.5.3
New
- Line-of-sight Anti-Xray. Ores are sent to the client as the rock around them (stone, deepslate, tuff, netherrack, ...) until the player can actually see them. Xray packs and Xray mods see plain rock where the ores are hidden. - Each check tests every exposed ore face from the player's eye, and also from the F5 front/back camera, so third-person view doesn't reveal or hide anything wrongly. A camera clipped into a wall can't see through it. - Ores within a few blocks are always shown, and ores next to a block you break are checked straight away, so you never mine into fake stone. - Once seen, an ore stays real until you move away (forget-distance), so nothing flickers back to stone. - Per-world ore lists and height ranges underanti-xray.worlds. Defaults cover all Overworld and Nether ores; the End is off. - Works alongside FreeCam protection and Smart Fill. Smart Fill never uses a hidden ore as fill material. - Split bypass permissions.fpantifreecam.bypass.freecamandfpantifreecam.bypass.xraybypass one feature each.fpantifreecam.bypassstill bypasses both, and setting one of the new nodes tofalseturns that part back on (e.g.bypass+bypass.freecam: false= Anti-Xray bypass only). - Cleaner `/fpac stats`. Grouped into Server / Protection / Smart Fill / Anti-Xray / Traffic sections, one setting per row, no chat prefix on every line, short numbers (12.3k).Performance
- Reveals are sent as block-change packets grouped per chunk section. Anti-Xray never re-sends whole chunks. - Chunk sections that contain no hidden ore are skipped without scanning their blocks. - Visibility checks run every 5 ticks with a per-player step budget (ray-budget), nearest ores first, and are skipped while the player stands still and doesn't turn. - Bedrock (Geyser) players get at most 256 reveals per check, so Geyser isn't flooded.Bug fixes
- Smart Fill and Anti-Xray now share the same line-of-sight code, so both use the same safety checks (no chunk loads, no reading other Folia regions). - An error in Anti-Xray can no longer stop the plugin from enabling, or skip FreeCam hiding on a packet.Notes
- Config updates to `config-version: 5.4` automatically. A newanti-xray:section is added; your existing settings are kept. - OPs no longer bypass protection automatically.fpantifreecam.adminno longer includes any bypass permission. Givefpantifreecam.bypass(or.bypass.freecam/.bypass.xray) to staff who should be exempt. - If Paper's built-in anti-xray is enabled in a world, the console warns you. Turn one of them off, since running both stacks fake ores on top of ours. - Tested on Purpur 26.2. Spigot and Folia are supported but not tested on a live server yet, so please report any issues.1.5.2FP's AntiFreecam 1.5.2last week New Feature
Smart Fill: line-of-sight reveal
Smart Fill now reveals caves based on what you can actually see. Once a second, the plugin casts rays from your eyes and reveals every cave section they pass through, out to your render distance (orreveal-max-distance-cap, default 128 blocks). Large caverns are now revealed across their full width instead of ending in a wall of fake stone partway across. Walls and corners still block the view, so bases behind them stay hidden. The close-range reveal around you works as before. New settings inprotection.smart-fill: -reveal-line-of-sight: turn the ray sweep on or off (defaulttrue) -reveal-follow-render-distance: limit the sweep to your render distance (defaulttrue) -reveal-max-distance-cap: hard cap in blocks, 32 to 256 (default128) -reveal-sight-budget: max blocks checked per player per second (default60000)Other new settings
-replacement.smart-fill.disable-for-bedrock(defaulttrue): Bedrock players (Geyser/Floodgate) get plain hiding below void-y instead of Smart Fill. Smart Fill re-sends chunks as players move, and Bedrock shows those re-sends as glitchy chunk reloads. Java players keep Smart Fill. Set this tofalseto give Bedrock players Smart Fill again. -performance.max-chunks-per-player-per-tick(default8, range 1-64): how many chunks one player can be sent per tick on Folia. Lower it if the network is still busy, or raise it if caves take too long to appear.
- Supports Paper, Folia, Purpur and Spigot, 1.19 – 26.3. - Spigot support fixed: the plugin used to crash on plain Spigot. It now works there, with these differences: - Chunk refreshes use the server's view distance instead of each player's. -Compatibility
/fpac statsshows TPS as N/A. - Freecam mod detection is turned off, because it needs Paper. - Requires PacketEvents 2.11.0 or newer. Use the PacketEvents version that matches your Minecraft version (for example 2.14.0+ for 26.3).
- Smart Fill no longer slows down the network or raises ping on busy servers. Smart Fill refreshes used to go to every nearby player, not just the one who needed them, so with many players in one area chunk traffic grew far faster than the player count. Each refresh now goes only to the player it's for, on Paper, Spigot and Folia. - Folia: Smart Fill chunk refreshes are spread over several ticks with a per-player limit, instead of being sent in one large burst. - Smart Fill remembers which chunks were sent to each player with hidden blocks in them, and only re-sends a chunk when the player has moved or turned enough to reveal something new. These records are cleared when a chunk unloads on the client, and on respawn, world change, quit, or when Smart Fill turns off for the player. - Chunks already waiting to be refreshed are no longer queued again, which lowers server and network load. -Performance
performance.max-chunks-per-tickis now actually used. - Paper/Folia: entities are removed from the plugin's internal cache the moment they leave the world, instead of every world being scanned every 60 seconds. Spigot still uses the periodic scan. - If your server doesn't support per-player chunk sending, the plugin logs one warning and goes back to the old method.Bug fixes
Chunks & terrain
- Fixed players sometimes seeing a gap of missing chunks while mining underground with Smart Fill disabled. Walking into it froze the player and made the screen glitch until a relog or/fpac reload. - Chunks that were hidden while near the surface are now always restored once protection turns off. Any that slip through are repaired automatically within about a second. - Chunk refresh requests are no longer dropped when protection switches on and off quickly (most noticeable on Folia). - Fixed some caves staying hidden in large caverns. When too many newly visible chunks appeared at once, the extras were skipped and never updated. They're now refreshed over the next few seconds.Bedrock (Geyser/Floodgate)
- Fixed chunks constantly reloading every 1–2 seconds when Smart Fill was enabled. The world would flash between empty ground and half-loaded terrain with floating trees. - Fixed chunks sometimes not loading at all. Too many chunks were re-sent at once and Bedrock clients dropped some of them. Smart Fill updates are now rate-limited for Bedrock players, and refreshes never go beyond their view distance. - Fixed outdated chunks at the edge of Bedrock players' view. The outermost ring of chunks is now refreshed properly when protection changes. - Fixed Bedrock detection breaking after/fpac reload. - Clearer startup message when Geyser/Floodgate isn't found. If Geyser runs on a proxy (BungeeCord/Velocity), install Floodgate on the backend server too so Bedrock players are recognised.Mobs & entities
- Fixed mobs sometimes being invisible while still attacking (creepers exploding, skeletons shooting, zombies hitting with nothing visible). Seen mostly on Folia. - Mobs whose spawn was hidden because they spawned below void-y are sent to the player again once they move somewhere that shouldn't be hidden. - Mobs hidden while underground are shown again as soon as they leave the hidden zone, instead of staying hidden until the player's own protection state changed. - Mobs inside hidden underground areas stay hidden, so base protection works the same as before. - Entity Hider: minecarts, boats and chest/hopper/TNT/furnace/spawner minecarts placed underground were never hidden. They are now. - Fixed entities staying hidden after turninghide-entitiesoff and reloading.Folia
- Fixed theThread failed main thread check: Accessing entity state off owning region's threaderror that appeared in console every 60 seconds during cache cleanup. Each entity is now checked on the thread that owns it. - Showing or hiding a mob in a different region no longer throws an error and stops the remaining mobs from being shown. Those mobs are retried on the next check. - Fixed a scheduling error that could stop chunk refreshes for a player until they relogged.Other
- Sounds, particles and mob/item spawns in hidden areas now followpie-chart-protectionand Smart Fill's reveal, so you can hear and see them in your own cave again. - Fixed some block sounds being hidden or shown based on the wrong position. -pie-chart-protection: falsenow also stops hiding chest/sign/spawner data. - Raycast no longer turns off Smart Fill's look-direction reveal. - Fixed freeze detection never triggering. - Smart Fill reveal settings now load on startup instead of only after a reload.
-Config & cleanup
config.ymlis reorganized, with shorter and clearer comments. - Removed theprotection.raycastsection. It now uses fixed, tuned values. - Removed the unusedfolia-optimizationsoption. - Freecam detection's translation keys are now built in. - Removed the unused/fpac freecamtestcommand. Automatic Freecam detection on join is unchanged.
- Your config updates automatically to version 5.3. New settings are added, removed keys are deleted, and your other values stay the same. - For the new clean comments, deleteNotes
plugins/FPAntiFreeCam/config.ymland let it regenerate. - Bedrock players may see hidden caves turn into real blocks a few seconds later than Java players. Java players aren't affected.1.5.2-e30a9d7FP's AntiFreecam 1.5.2-e30a9d7last week Fixed
- Fixed players sometimes seeing a gap of missing chunks while mining underground with Smart Fill disabled. Walking into it froze the player and made the screen glitch until a relog or /fpac reload. - Chunks that were hidden while near the surface are now always restored once protection turns off. Any that slip through are repaired automatically within about a second. - Chunk refresh requests are no longer dropped when protection switches on and off quickly (most noticeable on Folia). - Fixed a Folia scheduling error that could stop chunk refreshes for a player until they relogged.1.5.2-1b514b1FP's AntiFreecam 1.5.2-1b514b12 weeks ago Fixed
- Smart Fill no longer slows down the network or raises ping on busy servers. Smart Fill refreshes were sent to every nearby player, not just the one who needed them. With many players in the same area, chunk traffic grew far faster than the player count and raised everyone's ping. Each refresh now goes only to the player it's for. - Folia: Smart Fill chunk refreshes are now spread over several ticks with a limit per player, instead of being sent in one large burst. - Paper/Spigot: The same per-player chunk sending is used here too.Added
- New settingperformance.max-chunks-per-player-per-tick(default8, range 1-64) to control how many chunks one player can be sent per tick on Folia. Lower it if the network is still busy, or raise it if caves take too long to appear.Notes
- Your config updates automatically to version 5.3. The new setting is added and your existing values stay the same. - If your server doesn't support per-player chunk sending, the plugin logs one warning and goes back to the old method.1.5.2-e7509b1FP's AntiFreecam 1.5.2-e7509b12 weeks ago Fixes
- Invisible mobs: Fixed mobs sometimes being invisible while still attacking, such as creepers exploding, skeletons shooting or zombies hitting with nothing visible. Seen mostly on Folia. - Mobs whose spawn was hidden because they spawned belowvoid-yare now sent to the player again once they move somewhere that shouldn't be hidden. - Mobs hidden while underground are now shown again as soon as they leave the hidden zone, instead of staying hidden until the player's own protection state changed. - Folia: Showing or hiding a mob in a different region no longer throws an error and stops the remaining mobs from being shown again. Those mobs are now retried on the next check.Notes
- Mobs inside hidden underground areas stay hidden, so base protection works the same as before. - No config changes.1.5.2-2144a40FP's AntiFreecam 1.5.2-2144a402 weeks ago New
- `replacement.smart-fill.disable-for-bedrock` (default:true): Bedrock players (Geyser/Floodgate) now get plain hiding belowvoid-yinstead of Smart Fill. Smart Fill re-sends chunks as players move, and Bedrock shows those re-sends as glitchy chunk reloads. Java players keep Smart Fill. Set this tofalseto give Bedrock players Smart Fill again.Notes
- Yourconfig.ymlupdates itself to version 5.2 and adds the new option without changing your other settings. - Bedrock players are detected through Geyser or Floodgate. If Geyser runs on a proxy, install Floodgate on the backend server too.1.5.2-bcf3172FP's AntiFreecam 1.5.2-bcf31722 weeks ago Fixes
- Bedrock (Geyser/Floodgate): Fixed chunks constantly reloading for Bedrock players every 1–2 seconds when Smart Fill was enabled. The world would flash between empty ground and half-loaded terrain with floating trees.Improvements
- Smart Fill: The plugin now remembers which chunks were sent to each player with hidden blocks in them. It only re-sends a chunk when the player has moved or turned enough to reveal something new. This also cuts unnecessary chunk traffic and server load for Java players. - Chunk records are cleared automatically when a chunk unloads on the client, and on respawn, world change, quit, or when Smart Fill turns off for the player.1.5.2-f5131c1FP's AntiFreecam 1.5.2-f5131c12 weeks ago FPAntiFreeCam 1.5.2
Fixes
- Folia: Fixed theThread failed main thread check: Accessing entity state off owning region's threaderror that appeared in console every 60 seconds during cache cleanup. - Folia: Entity hider cleanup now checks each entity on the thread that owns it. Stale entries for despawned or removed entities are cleared just as on Paper and Spigot.Improvements
- Paper/Folia: The plugin now removes entities from its internal cache the moment they leave the world, instead of scanning every world every 60 seconds. Spigot still uses the periodic scan.1.5.2-b3a01ebFP's AntiFreecam 1.5.2-b3a01eb2 weeks ago Bedrock / Geyser fixes
- Fixed chunks sometimes not loading for Bedrock players. The plugin was re-sending too many chunks at once, and Bedrock clients (via Geyser) were dropping some of them. Bedrock players now get far fewer chunk re-sends: Smart Fill updates are rate-limited for them, and refreshes never go beyond their view distance. - Fixed outdated chunks at the edge of Bedrock players' view. The outermost ring of chunks is now refreshed properly when protection changes. - Fixed Bedrock detection breaking after `/fpac reload`. - Clearer startup message when Geyser/Floodgate isn't found. If Geyser runs on a proxy (BungeeCord/Velocity), install Floodgate on the backend server too so Bedrock players are recognised.General fixes
- Fewer duplicate chunk re-sends for everyone. If a chunk is already waiting to be refreshed, it's no longer added again. This lowers server and network load on both Paper and Folia. - Fixed some caves staying hidden in large caverns. When too many newly visible chunks appeared at once, the extras were skipped and never updated. They're now refreshed over the next few seconds.Note
Bedrock players may see hidden caves turn into real blocks a few seconds later than Java players. Java players aren't affected.1.5.2-05f5b88FP's AntiFreecam 1.5.2-05f5b882 weeks ago
Smart Fill now reveals caves based on what you can actually see. Once a second, the plugin casts rays from your eyes and reveals every cave section they pass through, out to your render distance (orNew: Smart Fill
reveal-max-distance-cap, default 128 blocks). Large caverns are now revealed across their full width instead of ending in a wall of fake stone partway across. Walls and corners still block the view, so bases behind them stay hidden. The close-range reveal around you still works as before. Config (protection.smart-fill): -reveal-line-of-sight: turn the ray sweep on or off (defaulttrue) -reveal-follow-render-distance: limit the sweep to your render distance (defaulttrue) -reveal-max-distance-cap: hard cap in blocks, 32 to 256 (default128) -reveal-sight-budget: max blocks checked per player per second (default60000)
- Supports Paper, Folia, Purpur and Spigot, 1.19 – 26.3. - Spigot support fixed: the plugin used to crash on plain Spigot. It now works there, with these differences: - Chunk refreshes use the server's view distance instead of each player's. -Compatibility
/fpac statsshows TPS as N/A. - Freecam mod detection is turned off, because it needs Paper. - Requires PacketEvents 2.11.0 or newer. Use the PacketEvents version that matches your Minecraft version (for example 2.14.0+ for 26.3).
- Sounds, particles and mob/item spawns in hidden areas now followBug fixes
pie-chart-protectionand Smart Fill's reveal, so you can hear and see them in your own cave again. - Fixed some block sounds being hidden or shown based on the wrong position. -pie-chart-protection: falsenow also stops hiding chest/sign/spawner data. -raycastno longer turns off Smart Fill's look-direction reveal. - Fixed freeze detection never triggering. - Fixed entities staying hidden after turninghide-entitiesoff and reloading. -performance.max-chunks-per-tickis now actually used. - Smart Fill reveal settings now load on startup instead of only after a reload.
-Config cleanup
config.ymlis reorganized, with shorter and clearer comments. - Removed theprotection.raycastsection. It now uses fixed, tuned values. - Freecam detection's translation keys are now built in. - Removed the unusedfolia-optimizationsoption. - Removed keys are deleted from existing configs automatically on update; your other settings are kept. Config version 5.1. For the new clean comments, deleteplugins/FPAntiFreeCam/config.ymland let it regenerate.1.5.2-3c4c107FP's AntiFreecam 1.5.2-3c4c107Sep 6, 2026 Bug Fixes
- Entity Hider: minecarts & chest minecarts were never hidden. Bukkit firesVehicleCreateEvent(notEntitySpawnEvent) when a player places a minecart, boat, or chest/hopper/TNT/furnace/spawner minecart. Since Entity Hider only listened forEntitySpawnEvent, any minecart placed underground while protection was active was left fully visible. Added aVehicleCreateEventlistener so all vehicle types are now caught and hidden correctly.Removed
- Removed the unused/fpac freecamtestmanual-probe command and its leftover code/help entry. Automatic join-time Freecam detection is unaffected.1.5.1FP's AntiFreecam 1.5.1Sep 2, 2026
- Freecam mod detection: probes players once on join with known Freecam-mod translation keys via a hidden anvil GUI, comparing what the client echoes back against the mod's real lang file. Fully configurable under freecam-detection in config.yml, including which translation keys to check and which command(s) to run on detection (kick by default, placeholders for player, uuid, and matched key). - Staff alerts: new fpantifreecam.alerts permission. Anyone holding it gets an in-game alert plus a console log line whenever a player is flagged, similar to an anticheat's alert feed. - pie-chart-protection now defaults to enabled, closing the F3 pie-chart exploit for locating chests, spawners, and bases through the void. Previously opt-in.New Features
- Fixed the void-hiding radius under-scoping on servers with a per-world view distance higher than the global server.properties default. Bukkit.getViewDistance() ignored Paper's per-world override, leaving a ring of real, unmasked terrain visible just outside the refresh radius. - Fixed a memory leak in ChunkListener where every spawned mob, item, XP orb, and painting added an entry to an internal cache that was never removed, even after despawning. Entity removal is now tracked via a periodic sweep and the cache is also cleared on disable/reload. - Fixed a crash on server shutdown (IllegalPluginAccessException) caused by scheduler calls made after the plugin was already marked disabled. - Fixed a related shutdown crash (Plugin cannot be disabled) from attempting to hide/show entities during onDisable(), which Bukkit refuses outright regardless of threading. - Fixed the jar requiring Java 21 to even load, which broke it entirely on real 1.19.x/1.20.x servers (those run on Java 17). Lowered the compile target to 17, no loss of functionality. - Fixed the Freecam probe item occasionally leaking into a player's inventory when the hidden anvil GUI auto-closed.Bug Fixes
- Freecam detection no longer periodically re-probes players while they're online. It only probes once, on join, since popping the anvil GUI mid-session was interrupting active PVP by hijacking left-click input. - Bedrock players (via Geyser/Floodgate) are now excluded from Freecam probing entirely; Freecam mods are Java Edition only and can't exist on Bedrock. - lang/*.yml now auto-merges new message keys on a config-version bump, the same mechanism config.yml already used. - Cleaned up config.yml comments across the board for readability, no keys or default values changed.Improvements
1.5.1-60e25e4FP's AntiFreecam 1.5.1-60e25e4Sep 1, 2026
Freecam detection now only probes once, on join, instead of repeating every probe-interval-seconds. Periodic re-probing was popping the hidden anvil GUI mid-session, which hijacks left-click input and was interrupting active PVP. This isn't just disabled by default anymore, it's removed entirely from the code, there's no toggle to bring back the old always-on behavior. A player who installs Freecam mid-session won't be caught until their next join, or via /fpac freecamtest on demand. Shortened probe-timeout-ticks default from 20 to 5, so even the one-time join probe is a much briefer flash. Cleaned up config.yml comments across the board: removed decorative dividers, replaced dense inline notes with plain readable sentences. No keys or default values changed, this is comment/formatting only.Improvements
1.5.1-9de9d9dFP's AntiFreecam 1.5.1-9de9d9dAug 30, 2026 This update introduces significant stability improvements, memory leak fixes, cleaner shutdown handling, and Bedrock/Geyser integration improvements for the Freecam detection engine. ---
Fixed Shutdown Scheduler Crashes (`IllegalPluginAccessException`)*: * Handled Bukkit's internal lifecycle restriction whereBug Fixes & Stability
BukkitSchedulerrejects task registrations once disabling starts. Shutdown tasks now execute inline cleanly on both Paper and Folia region schedulers. Fixed `EntityHider` Disable Warnings*: * GuardedhideEntity/showEntitycalls during server shutdown to preventCraftPlayerdisabled-plugin warnings. Fixed Memory Leak in `entityYCache`*: * Entities (mobs, items, orbs) registered in the Y-cache are now periodically pruned every 60 seconds against active world entities, preventing unbounded RAM growth on long-running servers with mob farms. Preserved Backwards-Compatibility for 1.19.4+*: * Refactored cache cleanup to avoid relying on newer Paper-only removal events, ensuring 100% compatibility across Paper 1.19.4 through 1.21.x+. ---
Geyser / Floodgate Compatibility*: * Bedrock players connecting through Geyser/Floodgate are now automatically identified and skipped by the translation-key probe engine to prevent unnecessary GUI packet flashes on Bedrock clients. Entity Status & Diagnostics*: * Added entity cache statistics toFreecam & Bedrock Improvements
/fpafc statusfor easier monitoring by server administrators.1.5.1-629e063FP's AntiFreecam 1.5.1-629e063Aug 30, 2026
Fixed a crash on server shutdown (IllegalPluginAccessException) caused by EntityHider trying to reschedule entity-visibility tasks after the plugin had already been marked as disabled. Scheduling calls made during shutdown now run immediately instead of being queued, so /stop and plugin reloads no longer log an error.Bug Fixes
1.5.1-f16eeecFP's AntiFreecam 1.5.1-f16eeecAug 30, 2026
- Freecam detection | probes players with known Freecam-mod translation keys via a hidden anvil GUI and compares what the client echoes back. Runs on join and on a periodic sweep, independent of worlds.list. - Staff alerts | new fpantifreecam.alerts permission. Anyone holding it gets an in-game alert plus a console log line on every detection, similar to an anticheat's alert feed. - /fpac freecamtest <player> — manually fires a probe on demand for testing, bypassing the normal interval/cooldown. (FOR ALPHA ONLY) - Detection keys and the kick command are fully configurable under freecam-detection in config.yml. - Bumped config-version to 4.4New Features
- pie-chart-protection now defaults to true, closing the F3 pie-chart exploit for locating chests/spawners/bases through the void (previously opt-in). - lang/*.yml now auto-merges new message keys on a config-version bump, the same mechanism config.yml already used.Improvements
This is the first release of the detection system. It relies on client behavior (auto-echoing an anvil rename field) that hasn't been verified across every Freecam-family fork or Minecraft version. Report false positives/negatives on Discord or GitHub Issues.Alpha Notice
1.5.01.5.0 -- bStats ImplementationAug 29, 2026 Added bStats metrics integration to track anonymous plugin statistics and bumped version to 1.5.0.1.4.91.4.9 — Fix EntityHide Issues on FoliaAug 2, 2026
- [Folia] Entity hiding now actually works on Folia — On Folia servers,Bug Fixes
hideEntity()/showEntity()calls were silently failing due to region-thread ownership violations. The plugin was scheduling visibility tasks on the region that owns the spawned entity, then attempting to mutate every online player's state from that thread — which Folia correctly rejects. The exceptions were being swallowed silently (logged at.fine(), invisible by default), making it appear as if "nothing happened." Entity hiding is now dispatched through Folia'sEntityScheduleron a per-player basis, which always runs on the correct region thread for that player regardless of where they are in the world. - [Folia] Entity hiding after teleport now scans the correct location —entityHider.updateFor()was being called beforeteleportAsync()completed, causing it to check for nearby entities around the player's pre-teleport position. Entities near the teleport destination were never hidden. The call is now correctly placed inside thewhenCompletecallback, after the teleport has landed. - [Folia] Entities now re-show correctly when protection deactivates —entityHider.updateFor()was only invoked when arming protection (going underground), not when disarming (coming back up or dismounting a vehicle below protectionY). This caused entities hidden by EntityHider to remain invisible until an unrelated state change happened to trigger an update. Both arm and disarm paths now callupdateFor(). - Hide/show failures are now visible in console —hideEntity()andshowEntity()errors were previously logged at.fine()(suppressed by default), masking failures entirely. They are now logged at.warning()level so server admins can see if something goes wrong.1.4.81.4.8 -- Fix Packet CorruptionAug 1, 2026
- Fixed `invalid bit length repeat` packet corruption / client disconnects — Previously, FPAntiFreeCam bundled its own copy of PacketEvents alongside standalone PacketEvents on the server. This created duplicateCritical Bug Fix: Packet Corruption & Disconnects
PacketEventsEncoderinstances in the Netty pipeline, corrupting large chunk compression streams (especially while swimming or rapidly loading chunks). - PacketEvents is now a required external dependency — FPAntiFreeCam no longer bundles PacketEvents. This fixes the Netty pipeline conflict and reduces the plugin JAR size from 5.1 MB down to 61 KB.Important: You must have the [PacketEvents](https://modrinth.com/plugin/packetevents) plugin installed on your server for FPAntiFreeCam to start.
1.4.71.4.7 -- Fix Folia Async Crash & Netty Packet FilteringAug 1, 2026
- Fixed Folia crash: `AsyncCatcher` error on `Chunk getEntities call` — TheBug Fixes
ENTITY_SOUND_EFFECTpacket handler was callingworld.getEntities()on the Netty IO thread, which Folia blocks. Replaced with a thread-safe entity position cache that requires zero Bukkit API calls on the network thread. - Fixed Folia raycast thread-safety violation — The raycast task was running on theGlobalRegionSchedulerwhile accessing world block data across different region threads. Each player's raycast is now scheduled on their owning region thread.
- Early packet-type filtering — The packet listener now checks the packet type before any Bukkit API calls. Previously,Performance Improvements
Bukkit.getPlayer(),player.getWorld(),player.hasPermission(), andplayer.getGameMode()were executed for every single outbound packet (chat, tab list, keep-alive, etc.) — even though we only handle ~10 specific packet types. This eliminates unnecessary overhead for ~90% of all outbound packets. - Bypass permission caching —player.hasPermission()andplayer.getGameMode()are no longer called on the Netty IO thread. A thread-safe bypass cache is updated on the main thread during player join, quit, world change, gamemode change, and/fpac bypass, so the packet handler only performs a fast map lookup. - Cached reflection calls — All scheduler reflection inPlatformUtil(getMethod,invoke) is now resolved once at class load instead of on every scheduler call. The tile entity reflection field in the chunk handler is also cached statically. - Reduced debug logging overhead — Debug string concatenation in the hot packet path is now properly guarded and only runs when debug mode is actually enabled.
- Bumped config version toHousekeeping
4.21.4.51.4.5 -- Folia Bug FixesAug 1, 2026
- Teleport crash:Fixed (Folia)
onPlayerTeleportcalled the blockingEntity#teleport()from inside a Folia region-scheduled task, which always throwsUnsupportedOperationException: Must use teleportAsync while in region threading. The player was never moved and protection silently failed to apply/lift. Switched toteleportAsync(), with the follow-up state update correctly bounced back onto the owning region thread. - Entity-hiding crash risk:EntityHider(active by default viaentities.hide-entities: true) scheduled its hide/show/spawn-hook logic on the global region scheduler instead of the region that actually owns the entity/player. Same failure class as the teleport bug — now routed through the region-aware scheduler. - Update-notification crash risk: the "notify already-online admins of a new version" path called the raw, legacyBukkit.getScheduler().runTask(), which Folia rejects outright. Triggered whenever an update is detected while an admin is already online (e.g. right after/fpac reload). Now uses the Folia-safe scheduler wrapper like the rest of the plugin.
-Fixed (config correctness)
protection.pie-chart-protectionhad no effect — tile-entity stripping (CHUNK_DATA) and entity-spawn packet cancellation ran unconditionally regardless of the setting. Both now correctly respect it.
-Config
config-versionbumped to4.1to ensure the migration path runs cleanly on upgrade for all existing installs.1.4.41.4.4 -- Minor bug fixesJun 22, 2026
Fixed Plugin not able to check for updates (HTTP 404 error)FPAntiFreeCam v1.4.4 — Minor bug fixes
1.4.3v1.4.3 — Security & OptimizationsJun 5, 2026
This massive update introduces critical security hardening, prevents CPU thread/scheduler leaks on reload, and resolves several gameplay edge-cases such as vehicle mounting and spectator mode bypasses. Fully tested and verified on PaperMC & Folia from 1.19 up to 1.21.11 / 26.1.2.FPAntiFreeCam v1.4.3 — Security & Optimization Update
Pie-Chart Protection Overhaul:* Removed theSecurity & Protection Hardening
isPieChartProtectionEnabledconditional guard from block entities and spawn entity packet interception. Security features (like stripping tile entity NBT data and hiding underground entity packets) are now active unconditionally while a player is in the protected zone. Teleport Race Condition Fixed:* Delayed state updates to align perfectly with the actual teleport tick. This eliminates a brief 1-tick window where client-side exploits could grab chest/ore data before the teleport fully registered. Surface Raycast Protection Fixed:* Corrected a bug where players standing fractionally below the surface Y-level had their protection inadvertently disabled. Mounting Protection:* IntegratedVehicleEnterEventandVehicleExitEventmonitors to instantly evaluate protection states when players enter or leave vehicles.
Scheduler Thread Leaks Remedied:* Resolved a CPU leak during command reloads (Bug Fixes & Optimizations
/fpac reload) where repeating background tasks were not tracked and canceled. All active schedulers are now safely destroyed and re-initialized. Spectator Mode Bypass Support:* Fixed a layout obscuring issue where Spectators traversing protected zones were impacted by the void replacement blocks. Event Listener Cleanup:* Dropped redundant Bukkit event listeners to prevent internal state-racing during gamemode transitions. Invite Link Fix:* Fixed the expired Discord invite link in documentation.
* Verified compatibility across configurations. No manual file changes required!Configuration
1.3.11.3.1 -- Reworked Layer 1 Logic SystemMay 26, 2026 Changelog
- Layer 1 logic system was inverted, they are now fixed.1.3.0v1.3.0 — Two-Layer Detection & Update CheckerMay 25, 2026
- Two-layer underground detection system — replaces the old single raycast zone with a cleaner, more reliable two-layer approach: - Layer 1 – Hard floor (New
deep-deactivation-y, default Y=20): if a player's feet are below this Y, protection is unconditionally OFF. No raycast, no exceptions. Fixes the Y=16 void bug and trial chamber weirdness entirely. - Layer 2 – Raycast zone (betweendeep-deactivation-yandsurface-y): two sub-checks decide whether to arm protection — camera angle (looking upward) and sky visibility (open ceiling above). Both must be false to stay unprotected. - Update checker — on startup, the plugin checks Modrinth for a newer version. If one exists, a banner is printed to console and any online admins (fpantifreecam.admin) are notified. New admins are also notified on join. Toggle viasettings.update-checker: true/false.
- AddedConfig
protection.deep-deactivation-y: 20.0— the absolute Y floor below which protection is always off. - Addedsettings.update-checker: true— toggle the update checker. - Removedprotection.raycast.zone— replaced bydeep-deactivation-y. - Existing configs are automatically migrated on first load (no manual edits needed).1.2.0v1.2.0 — Raycast & Detection OverhaulMay 24, 2026
- Fixed protection not working for most surface players — a brokenBug Fixes
effectiveVoidYcalculation in the packet handler was setting the hide threshold to Y=-12 for players between Y=15–47, making bases fully visible. Underground blocks are now always hidden correctly at the configuredvoid-y. - Fixed raycast and move handler fighting each other — when a player dipped just belowsurface-y,onPlayerMovewould deactivate protection instantly, then the raycast task would re-activate it 250ms later, causing rapid state flipping and chunk refresh spam. The move handler now defers to the raycast task inside the raycast zone. - Fixed eye-Y vs feet-Y inconsistency — the raycast task used eye position (~1.6 blocks above feet) while the move handler used feet position, creating a dead zone where neither system owned the state. Both now use feet-Y consistently. - Fixed raycast overshoot — the vertical ray was castsurfaceY - eyeY + 2.0blocks, overshooting past the surface and registering false positives from surface-level blocks.
- Raycast deactivation debounce — protection now waits a configurable delay before deactivating when a player leaves the raycast zone, preventing flicker at the boundary. Configurable viaNew
protection.raycast.deactivation-debounce-ms(default:500).
- AddedConfig
protection.raycast.deactivation-debounce-ms: 500— existing configs are automatically migrated on first load (no manual edits needed).1.1.0FP's AntiFreecam 1.1.0May 21, 2026 Bug fixes + Stability
- New features: Raycast-based activation (look-up-from-cave check) + enhanced /fpac stats with TPS, memory, uptime, and packet counters. - Optimizations: Section-level skipping in ChunkListener (skip whole sections above voidY instead of iterating all 16 Y layers per section), int ID comparison instead of equals(), and early-out if minY > voidY. - Fixed Underground Chunks not loading when player is underground/looking at the Configured Y Level.1.0.0FP's AntiFreecam 1.0.0May 20, 2026 Initial Release v1.0.0 * Updated PacketEvents to v2.12.1 for full Minecraft 1.21+ and 26.1 support. * Fixed the IllegalStateException: void future error for improved connection stability. * Added native support for Paper, Purpur, Folia, and Bedrock (Geyser/Floodgate). * Implemented a smart config auto-updater and refined the startup branding.
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta
LuckPerms
A permissions plugin/mod for Minecraft servers.
2.8MSueta
ItemSwapper
Inventory update concept for hotswapping items.
2.1MSueta