- Add bStats (plugin id 32378), relocated to me.legendcraft.antiseedcracker.lib.bstats, with platform/protection charts - Upgrade PacketEvents 2.12.2 -> 2.13.0 - Configurable seed-blocked messages via config.yml messages section - reload() now applies database enable/disable without restart - Strip debug symbols from shipped bytecode - Add contents:write permission to release workflow - Verified live: Paper 26.1.2-72 and Folia 26.1.2-8 boot with zero errors, WorldSeedInterceptor active on both
AntiSeedCracker
Version: 3.1.0 | Target: Minecraft 26.1.2 | Author: SunsetRQ7_
AntiSeedCracker is a professional, multi-layer world seed protection plugin for Paper, Purpur, Folia, and Spigot. It blocks every known technique a player can use to recover your world seed, protecting your server from ESP clients and seed-cracking tools.
Features
| Protection Layer | Description |
|---|---|
| Login & Respawn Packet Spoofing | Replaces the hashed seed in JOIN_GAME and RESPAWN network packets with a per-player cryptographically random fake seed. Operates at the Netty I/O level via PacketEvents before any client ever receives the real value. |
| Dynamic Seed Rotation | Periodically assigns each online player a new random fake seed (configurable interval, minimum 30 s). Defeats crackers that accumulate packets across multiple sessions. |
| Plugin API Protection | Patches the NMS seed field via reflection every second so any plugin calling World.getSeed() receives a rotating fake value. Re-applies unconditionally to prevent other plugins from undoing the patch. |
| Eye of Ender Redirection | Intercepts thrown Eyes of Ender and redirects their velocity toward a per-player fake stronghold location. Applies a ±8° angular jitter to prevent exact triangulation across repeated throws. |
| /locate Spoofing | Cancels /locate and replies with convincingly fake coordinates. Stronghold queries use the player's stable fake location for consistency. |
| /seed Command Block | Blocks /seed, /minecraft:seed, /getseed, /worldseed, and any extra commands configured in config.yml for players, console, and RCON. Also strips seed commands from tab-complete results. |
| End Spike Randomization | Shuffles the bedrock cap heights of all 10 End obsidian pillars at world load and after each dragon respawn cycle. Breaks the vanilla height fingerprint {76, 79, 82 … 103} that uniquely identifies the seed. |
| End City Glass Replacement | Replaces magenta stained glass in End City chunks with purpur blocks on first load. Prevents End City coordinate fingerprinting via the distinctive glass pattern. |
| Treasure & Explorer Map Scrambling | Intercepts MAP_DATA packets and randomises the on-map position of every structure icon (buried treasure, woodland mansion, ocean monument, and others). |
| Audit Log | Appends every blocked command, spoofed packet, and redirected Eye to a flat-file TSV log in plugins/AntiSeedCracker/logs/. Zero external dependencies — no SQLite. |
Compatibility
| Platform | Supported |
|---|---|
| Paper 26.1.2 | ✔ |
| Purpur 26.1.2 | ✔ |
| Folia 26.1.2 | ✔ (region-threaded scheduling) |
| Spigot 26.1.2 | ✔ (BukkitScheduler fallback) |
Runtime: Java 25 or higher is required.
Installation
- Download
AntiSeedCracker-3.1.0.jarfrom Releases. - Place it in your server's
plugins/folder. - Start or restart the server.
- Edit
plugins/AntiSeedCracker/config.ymlto your preference. - Run
/asc reloadto apply changes without restarting.
Commands
| Command | Description | Permission |
|---|---|---|
/asc reload |
Reloads config and restarts all protection tasks | antiseedcracker.admin |
/asc status |
Shows which protection layers are active | antiseedcracker.admin |
/asc stats |
Displays aggregate event counts from the audit log | antiseedcracker.admin |
/asc info |
Shows version, author, platform, and update status | antiseedcracker.admin |
The antiseedcracker.admin permission defaults to server operators.
Configuration
seed_obfuscation:
intercept_login: true
intercept_respawn: true
seed_rotation:
enabled: true
interval_seconds: 60
structure_protection:
end_spikes:
enabled: true
worlds:
- world_the_end
modify_world: true
end_cities:
enabled: true
worlds:
- world_the_end
modify_world: true
spoof_locate_command:
enabled: true
max_offset: 2000
plugin_api_protection:
enabled: true
eye_of_ender_protection:
enabled: true
worlds:
- world
fake_stronghold_min_distance: 800
fake_stronghold_max_distance: 4000
update_checker:
enabled: true
modrinth_id: "YOUR_MODRINTH_PROJECT_ID"
database:
enabled: true
log_events: true
max_event_age_days: 30
treasure_map_protection:
enabled: true
extra_blocked_commands:
- "seedcracker"
- "seedfind"
- "worldseedinfo"
modify_world Warning
Setting modify_world: true for End spikes or End cities permanently changes world data. Spike bedrock caps are moved to shuffled positions and End City magenta glass is replaced with purpur blocks. These changes persist across restarts. Set to false to disable physical world modifications while keeping all other protection layers active.
World Safety
AntiSeedCracker never reads, stores, or logs the real world seed. The only world modifications performed are:
- Moving bedrock cap blocks on End obsidian pillars (when
end_spikes.modify_world: true). - Replacing magenta stained glass in End City chunks with purpur blocks (when
end_cities.modify_world: true).
Both modifications use physicsUpdate: false to prevent block-update cascades. Each chunk is tagged with a Persistent Data Container key so the modification runs at most once per chunk across all server restarts. No terrain, biome, or structure data outside these specific block types is ever altered.
Folia Threading Model
All block mutations are dispatched to the region thread owning the relevant chunk via RegionScheduler (Folia) or the main thread (Paper/Spigot). Packet interceptors run on the Netty I/O thread and only perform ConcurrentHashMap lookups. The seed rotation and world-seed broadcast tasks run on the AsyncScheduler (Paper/Folia) or an asynchronous BukkitTask (Spigot).
Known Bypass Mitigations
| Attack Vector | Mitigation |
|---|---|
| Login/Respawn packet interception | PacketEvents HIGHEST-priority intercept |
/seed, /getseed, /worldseed |
PlayerCommandPreprocessEvent + ServerCommandEvent + RemoteServerCommandEvent blocking |
| Eye of Ender triangulation | Per-player fake stronghold + ±8° jitter |
/locate structure triangulation |
Spoofed coordinate output, consistent per-player stronghold fake |
| Treasure / explorer maps | MAP_DATA packet decoration scrambling |
| End spike height fingerprinting | Full Fisher-Yates shuffle of pillar cap heights |
| End City coordinate fingerprinting | Magenta glass block replacement |
Other plugin API (world.getSeed()) |
NMS field reflection patch, re-applied unconditionally every second |
| Tab-complete exposure | TabCompleteEvent filtering |
| RCON seed commands | RemoteServerCommandEvent blocking |
Building from Source
Requires Maven 3.6+ and JDK 25. The project compiles against folia-api 26.1.2 (Java 25 class files) and produces a Java 25 output jar.
# Windows
set JAVA_HOME=C:\Program Files\Java\jdk-25.0.3
mvn clean package
# Linux / macOS
export JAVA_HOME=/path/to/jdk-25
mvn clean package
The shaded jar is produced at target/AntiSeedCracker-3.1.0.jar. PacketEvents is bundled and relocated to me.legendcraft.antiseedcracker.lib.packetevents.
License
All rights reserved. Redistribution without permission is prohibited.