Sueta

FP's AntiFreecam

1.5.3-c550cc8

Protect your server from Freecam, X-Ray, and ESP. Inspired by the Donut SMP

·Plugin
  1. 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 under anti-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.freecam and fpantifreecam.bypass.xray bypass one feature each. fpantifreecam.bypass still bypasses both, and setting one of the new nodes to false turns 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 new anti-xray: section is added; your existing settings are kept. - OPs no longer bypass protection automatically. fpantifreecam.admin no longer includes any bypass permission. Give fpantifreecam.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.
    68 downloads
  2. 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 (or 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 works as before. New settings in protection.smart-fill: - reveal-line-of-sight: turn the ray sweep on or off (default true) - reveal-follow-render-distance: limit the sweep to your render distance (default true) - reveal-max-distance-cap: hard cap in blocks, 32 to 256 (default 128) - reveal-sight-budget: max blocks checked per player per second (default 60000)
    Other new settings
    - replacement.smart-fill.disable-for-bedrock (default true): 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 to false to give Bedrock players Smart Fill again. - performance.max-chunks-per-player-per-tick (default 8, 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.

    🧩 Compatibility

    - 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. - /fpac stats shows 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).

    ⚡ Performance

    - 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.max-chunks-per-tick is 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 turning hide-entities off and reloading.
    Folia
    - Fixed the Thread failed main thread check: Accessing entity state off owning region's thread error 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 follow pie-chart-protection and 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: false now 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.yml is reorganized, with shorter and clearer comments. - Removed the protection.raycast section. It now uses fixed, tuned values. - Removed the unused folia-optimizations option. - Freecam detection's translation keys are now built in. - Removed the unused /fpac freecamtest command. Automatic Freecam detection on join is unchanged.

    📝 Notes

    - 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, delete plugins/FPAntiFreeCam/config.yml and 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.
    156 downloads
  3. 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.
    54 downloads
  4. 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 setting performance.max-chunks-per-player-per-tick (default 8, 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.
    130 downloads
  5. 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 below void-y are 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.
    74 downloads
  6. 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 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 to false to give Bedrock players Smart Fill again.
    Notes
    - Your config.yml updates 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.
    22 downloads
  7. 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.
    12 downloads
  8. 1.5.2-f5131c1FP's AntiFreecam 1.5.2-f5131c12 weeks ago

    FPAntiFreeCam 1.5.2

    Fixes
    - Folia: Fixed the Thread failed main thread check: Accessing entity state off owning region's thread error 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.
    16 downloads
  9. 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.
    130 downloads
  10. 1.5.2-05f5b88FP's AntiFreecam 1.5.2-05f5b882 weeks ago

    ✨ New: Smart Fill

    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 (or 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 (default true) - reveal-follow-render-distance: limit the sweep to your render distance (default true) - reveal-max-distance-cap: hard cap in blocks, 32 to 256 (default 128) - reveal-sight-budget: max blocks checked per player per second (default 60000)

    🧩 Compatibility

    - 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. - /fpac stats shows 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).

    🐛 Bug fixes

    - Sounds, particles and mob/item spawns in hidden areas now follow pie-chart-protection and 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: false now also stops hiding chest/sign/spawner data. - raycast no longer turns off Smart Fill's look-direction reveal. - Fixed freeze detection never triggering. - Fixed entities staying hidden after turning hide-entities off and reloading. - performance.max-chunks-per-tick is now actually used. - Smart Fill reveal settings now load on startup instead of only after a reload.

    🧹 Config cleanup

    - config.yml is reorganized, with shorter and clearer comments. - Removed the protection.raycast section. It now uses fixed, tuned values. - Freecam detection's translation keys are now built in. - Removed the unused folia-optimizations option. - Removed keys are deleted from existing configs automatically on update; your other settings are kept. Config version 5.1. For the new clean comments, delete plugins/FPAntiFreeCam/config.yml and let it regenerate.
    98 downloads
  11. 1.5.2-3c4c107FP's AntiFreecam 1.5.2-3c4c107Sep 6, 2026
    Bug Fixes
    - Entity Hider: minecarts & chest minecarts were never hidden. Bukkit fires VehicleCreateEvent (not EntitySpawnEvent) when a player places a minecart, boat, or chest/hopper/TNT/furnace/spawner minecart. Since Entity Hider only listened for EntitySpawnEvent, any minecart placed underground while protection was active was left fully visible. Added a VehicleCreateEvent listener so all vehicle types are now caught and hidden correctly.
    Removed
    - Removed the unused /fpac freecamtest manual-probe command and its leftover code/help entry. Automatic join-time Freecam detection is unaffected.
    539 downloads
  12. 1.5.1FP's AntiFreecam 1.5.1Sep 2, 2026

    ✨ New Features

    - 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.

    🐛 Bug Fixes

    - 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.

    🔧 Improvements

    - 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.
    821 downloads
  13. 1.5.1-60e25e4FP's AntiFreecam 1.5.1-60e25e4Sep 1, 2026

    🔧 Improvements

    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.
    18 downloads
  14. 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. ---
    🐛 Bug Fixes & Stability
    Fixed Shutdown Scheduler Crashes (`IllegalPluginAccessException`)*: * Handled Bukkit's internal lifecycle restriction where BukkitScheduler rejects task registrations once disabling starts. Shutdown tasks now execute inline cleanly on both Paper and Folia region schedulers. Fixed `EntityHider` Disable Warnings*: * Guarded hideEntity / showEntity calls during server shutdown to prevent CraftPlayer disabled-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+. ---
    ⚡ Freecam & Bedrock Improvements
    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 to /fpafc status for easier monitoring by server administrators.
    38 downloads
  15. 1.5.1-629e063FP's AntiFreecam 1.5.1-629e063Aug 30, 2026

    🐛 Bug Fixes

    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.
    9 downloads
  16. 1.5.1-f16eeecFP's AntiFreecam 1.5.1-f16eeecAug 30, 2026

    ✨ New Features

    - 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.4

    🔧 Improvements

    - 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.

    ⚠️ Alpha Notice

    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.
    11 downloads
  17. 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.
    106 downloads
  18. 1.4.91.4.9 — Fix EntityHide Issues on FoliaAug 2, 2026
    🐛 Bug Fixes
    - [Folia] Entity hiding now actually works on Folia — On Folia servers, 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's EntityScheduler on 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 before teleportAsync() 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 the whenComplete callback, 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 call updateFor(). - Hide/show failures are now visible in console — hideEntity() and showEntity() 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.
    835 downloads
  19. 1.4.81.4.8 -- Fix Packet CorruptionAug 1, 2026

    🚨 Critical Bug Fix: Packet Corruption & Disconnects

    - 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 duplicate PacketEventsEncoder instances 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.
    41 downloads
  20. 1.4.71.4.7 -- Fix Folia Async Crash & Netty Packet FilteringAug 1, 2026

    🐛 Bug Fixes

    - Fixed Folia crash: `AsyncCatcher` error on `Chunk getEntities call` — The ENTITY_SOUND_EFFECT packet handler was calling world.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 the GlobalRegionScheduler while accessing world block data across different region threads. Each player's raycast is now scheduled on their owning region thread.

    ⚡ Performance Improvements

    - Early packet-type filtering — The packet listener now checks the packet type before any Bukkit API calls. Previously, Bukkit.getPlayer(), player.getWorld(), player.hasPermission(), and player.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() and player.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 in PlatformUtil (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.

    📦 Housekeeping

    - Bumped config version to 4.2
    18 downloads
  21. 1.4.51.4.5 -- Folia Bug FixesAug 1, 2026
    🐛 Fixed (Folia)
    - Teleport crash: onPlayerTeleport called the blocking Entity#teleport() from inside a Folia region-scheduled task, which always throws UnsupportedOperationException: Must use teleportAsync while in region threading. The player was never moved and protection silently failed to apply/lift. Switched to teleportAsync(), with the follow-up state update correctly bounced back onto the owning region thread. - Entity-hiding crash risk: EntityHider (active by default via entities.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, legacy Bukkit.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-protection had 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-version bumped to 4.1 to ensure the migration path runs cleanly on upgrade for all existing installs.
    15 downloads
  22. 1.4.41.4.4 -- Minor bug fixesJun 22, 2026

    🛡️ FPAntiFreeCam v1.4.4 — Minor bug fixes

    Fixed Plugin not able to check for updates (HTTP 404 error)
    604 downloads
  23. 1.4.3v1.4.3 — Security & OptimizationsJun 5, 2026

    🛡️ FPAntiFreeCam v1.4.3 — Security & Optimization Update

    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.
    🔒 Security & Protection Hardening
    Pie-Chart Protection Overhaul:* Removed the isPieChartProtectionEnabled conditional 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:* Integrated VehicleEnterEvent and VehicleExitEvent monitors to instantly evaluate protection states when players enter or leave vehicles.
    ⚡ Bug Fixes & Optimizations
    Scheduler Thread Leaks Remedied:* Resolved a CPU leak during command reloads (/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.
    🔧 Configuration
    * Verified compatibility across configurations. No manual file changes required!
    323 downloads
  24. 1.3.11.3.1 -- Reworked Layer 1 Logic SystemMay 26, 2026
    Changelog
    - Layer 1 logic system was inverted, they are now fixed.
    198 downloads
  25. 1.3.0v1.3.0 — Two-Layer Detection & Update CheckerMay 25, 2026

    ✨ New

    - Two-layer underground detection system — replaces the old single raycast zone with a cleaner, more reliable two-layer approach: - Layer 1 – Hard floor (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 (between deep-deactivation-y and surface-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 via settings.update-checker: true/false.

    ⚙️ Config

    - Added protection.deep-deactivation-y: 20.0 — the absolute Y floor below which protection is always off. - Added settings.update-checker: true — toggle the update checker. - Removed protection.raycast.zone — replaced by deep-deactivation-y. - Existing configs are automatically migrated on first load (no manual edits needed).
    35 downloads
  26. 1.2.0v1.2.0 — Raycast & Detection OverhaulMay 24, 2026

    🐛 Bug Fixes

    - Fixed protection not working for most surface players — a broken effectiveVoidY calculation 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 configured void-y. - Fixed raycast and move handler fighting each other — when a player dipped just below surface-y, onPlayerMove would 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 cast surfaceY - eyeY + 2.0 blocks, overshooting past the surface and registering false positives from surface-level blocks.

    ✨ New

    - Raycast deactivation debounce — protection now waits a configurable delay before deactivating when a player leaves the raycast zone, preventing flicker at the boundary. Configurable via protection.raycast.deactivation-debounce-ms (default: 500).

    ⚙️ Config

    - Added protection.raycast.deactivation-debounce-ms: 500 — existing configs are automatically migrated on first load (no manual edits needed).
    46 downloads
  27. 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.
    24 downloads
  28. 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.
    24 downloads

Similar projects

Plugin →