Create a Minecraft server plugin in Java for Paper 1.21.1–1.21.4 called AntiFreecam. The purpose of the plugin is to prevent players from using Freecam or ESP cheats to see underground bases, caves, or hidden structures. The protection must work server-side by ensuring underground block data is never sent to the client while the player is above ground. The plugin must depend on ProtocolLib and operate at the network packet level. Intercept outgoing MAP_CHUNK packets using a ProtocolLib PacketAdapter before they are sent to players. When a chunk packet is about to be sent, check the player’s Y coordinate. If the player’s Y position is above a configurable threshold (default Y=16), the plugin must modify the chunk packet so that all chunk sections below that Y level are replaced with AIR blocks. This means the client will never receive the real underground blocks, preventing Freecam or ESP cheats from revealing hidden bases. The real world data must never be modified — only the packet data sent to the player. If the player moves to Y ≤ 16, the plugin must resend nearby chunks so the player receives the real block data again, allowing them to see underground normally. Likewise, if a player moves back above the threshold, chunks should be resent with the masked data. Implementation details: * Use ProtocolLib to listen for outgoing MAP_CHUNK packets * Clone the packet data before modifying it * Identify chunk sections that contain blocks below the threshold * Replace block data in those sections with AIR * Avoid modifying sections above the threshold * Ensure the modification happens before the packet reaches the client so blocks never appear even for one frame Movement handling: * Detect when a player crosses the Y threshold * When crossing occurs, resend chunks within a configurable radius (default 6 chunks) Performance requirements: * No world scanning * No scheduled tasks * No TPS impact * Packet modification must happen inline in the ProtocolLib pipeline * Use efficient cloning to reduce memory allocation Configuration file (config.yml): hide-below-y: 16 chunk-resend-radius: 6 debug: false Permissions: antifreecam.bypass — players with this permission always receive real chunk data. Commands: /antifreecam reload — reload configuration. Output requirements: Generate a complete working plugin including: Main plugin class, ProtocolLib packet listener, chunk masking utility class, player movement listener, config.yml, plugin.yml, and a Maven or Gradle build file. Include comments explaining the packet masking logic and how chunk sections are replaced with AIR.