AntiSeedCracker
Stop seed crackers. Silently. Permanently.
Your world seed is the master key to your entire map. Whoever recovers it can compute — instantly, from outside the game, with zero in-game effort — the exact location of every stronghold, ancient city, buried treasure, ore vein, and slime chunk on your server. That's not a minor leak. That's wallhack-grade ESP for your whole world.
AntiSeedCracker shuts every known door a cheat client, ghost client, or tool like SeedCrackerX can use to get it. 14 protection layers. Zero kicks. Zero bans. Cheaters just quietly receive cryptographically random garbage and never find out why their cracker keeps failing.
Why protect your seed?
Once your seed is out, it doesn't matter how good your build-battle event or your economy plugin is — every hidden structure on the map is public information to anyone with a laptop. Seed-cracking tools don't need to hack your server or read your files: they reconstruct the seed purely from structure coordinates a player legitimately walked to. AntiSeedCracker can't make that impossible (nothing can — see Honest limits below), but it closes off every other way to leak it, and gives you visibility into the one it can't.
Protection layers
Network-level
- Packet-level seed spoofing — replaces the hashed seed in
JOIN_GAMEandRESPAWNpackets with a per-player, cryptographically random fake before it ever leaves the server (Netty-level, via bundled PacketEvents). - Dynamic seed rotation — every player's fake seed rotates on a configurable interval, defeating crackers that accumulate data across sessions.
- Seed integrity monitor — read-only watchdog confirming the real generation seed never drifts. AntiSeedCracker does not, and will not, write to your world's actual generation seed — see Safe for your world below.
World & structure
- Eye of Ender redirection — thrown Eyes are redirected to a per-player fake stronghold for their entire flight path, with angular jitter, making triangulation useless.
/locatespoofing — returns convincing fake coordinates, stable per player and per structure so repeat queries can't be used to spot the fake.- End spike randomization — shuffles the bedrock cap heights of the ten End pillars, destroying the vanilla height fingerprint that uniquely identifies a seed.
- End City fingerprint removal — replaces the distinctive magenta glass pattern in End Cities (scoped to the structure's bounding box, not the whole chunk).
- Treasure & explorer map scrambling — buried treasure, mansion, monument, and other structure icons on maps are randomized in the
MAP_DATApacket, stable per map so icons don't visibly jitter around. - Slime chunk obfuscation (opt-in) — denies slime-chunk-sampling-based cracking at the cost of disabling slime farms where enabled.
Command & detection (all logging-only where noted — never punishes players)
- Seed command blocking —
/seedand friends are blocked for players, console, and RCON, and stripped from tab-complete. /execute-wrapping protection — every blocked command is also checked against what an/execute ... run ...chain ultimately dispatches to (recursively, for nested chains), closing a well-known Bukkit command-blocker gap.- Structure reconnaissance monitor — logs suspicious multi-structure visitation patterns matching known seed-cracking tool behavior; the tracked structure list is fully configurable.
- Command probing monitor — logs a player racking up several blocked seed commands in a short window, a pattern consistent with a bypass-probing script rather than one curious
/seed. - Audit log — every blocked attempt is recorded to a lightweight flat-file log, with
/asc statssummaries in-game.
Never punishes players
AntiSeedCracker follows a strict no-punishment philosophy: no kicks, no bans, ever. Cheat tools silently fail while legitimate gameplay is completely unaffected — nobody gets caught in the crossfire.
Safe for your world
- The real seed is never read into logs, files, or network traffic, and is never rewritten by this plugin.
- An earlier internal design continuously overwrote the live in-memory generation seed to spoof
World.getSeed()for other plugins. That approach was removed in 3.3.0 after we found it could corrupt chunk decoration on affected servers — Minecraft re-reads that field fresh for every chunk it generates, not just once at world load. The plugin now only ever reads that value, never writes it. - Optional cosmetic changes (End spike caps, End City glass) are single-block, physics-free, run at most once per chunk, and can be disabled in the config.
- Verified by live testing on real Paper 26.1.2 and Folia 26.1.2 servers: zero errors, real seed confirmed byte-for-byte intact on disk after extended runtime.
Honest limits
No plugin can make a seed truly uncrackable against tools like SeedCrackerX, which reconstruct it from the real coordinates of structures a player has legitimately explored — that's not a network exploit, and coordinates can't be hidden from a player standing at their own position. AntiSeedCracker closes every server-side leak we're aware of (packet spoofing, triangulation, command access, structure fingerprinting) and adds detection for cracking-pattern behavior, but exploration-based cracking is a limit of the genre, not something this plugin claims to solve. If a listing promises "100% uncrackable," be skeptical of it — not of us for saying so.
Performance
Fully asynchronous by design. Packet work runs on Netty I/O threads with lock-free map lookups; periodic tasks use the async scheduler; on Folia, block operations are dispatched to the owning region thread. Zero measurable TPS impact.
Requirements & compatibility
| Server software | Paper, Purpur, or Folia |
| Minecraft version | 26.1 and newer (26.1.x – 26.2) |
| Java | 25 or newer |
| Dependencies | None — PacketEvents is bundled |
Spigot/CraftBukkit and legacy Minecraft versions (1.16.5 – 25.x) are not supported by this release, as the plugin relies on modern Paper APIs for its async and region-threaded architecture.
Quick start
- Drop
AntiSeedCracker-3.5.0.2.jarinto yourplugins/folder. - Restart the server. Protection is active immediately with sensible defaults.
- Optionally tune
plugins/AntiSeedCracker/config.yml— every layer, world list, message, and interval is configurable — and apply with/asc reload, or flip a single feature live with/asc toggle.
Commands
/asc status— see every protection layer at a glance/asc stats— audit log statistics/asc reload— apply config changes live/asc toggle <feature> [true|false]— flip one feature live without a full reload/asc info— version, platform, and update status/asc help— lists the subcommands you have permission to use
Permissions: antiseedcracker.admin (umbrella, default: op), or split as antiseedcracker.admin.status (view-only) / antiseedcracker.admin.manage (reload/toggle)
Open source under the MIT License: https://github.com/SunsetRQ7/AntiSeedCracker Issues and feature requests welcome on GitHub. Anonymous usage metrics via bStats (opt-out supported).
If you enjoy this project, thank you for your support! ❤️
All Versions
+ Add Version- Fixed**
- Fixed buried treasure map locations never actually being scrambled: the treasure map protection layer was filtering map icons by the wrong internal name, so a real buried treasure map still pointed straight at the true, unmodified location. It now correctly detects and scrambles the treasure marker.
- Fixed
end_cities/end_spikesprotection being able to permanently disable itself: ifmodify_worldwas left off for a world or chunk, turning it on later (including via/asc toggle) would silently do nothing for anything already loaded once while it was off. It now correctly applies the moment it's turned on. - Fixed the End obsidian pillar protection starting up to four times more background work than needed during a dragon respawn.
- General code cleanup and minor performance tightening (task scheduling, config parsing) with no behavior changes.
- Fixed**
- Fixed Eye of Ender redirection not actually holding: thrown eyes had their initial velocity redirected toward the fake stronghold, but Minecraft's own homing behavior would curve them back toward the real stronghold's direction within a second or two of flight. The eye's target location is now redirected as well, so it flies toward the fake stronghold for its entire flight, not just its first moment in the air.
- Fixed the fake stronghold location silently changing for online players on
/asc reloador/asc toggle, which could make a previously consistent/locate strongholdor Eye of Ender answer jump to a new location with no world change. Each player now keeps the same fake stronghold for their whole session, exactly as intended.
- Fixed**
- Fixed a compiler/target mismatch that prevented a clean build from source (build now correctly targets Java 25, matching the bundled Folia API).
- Fixed an
/execute-wrapped bypass of the seed-command blocker:/execute run seed(including nested chains and dimension switches like/execute in minecraft:the_end run seed) previously slipped past the blocker because/executere-dispatches its inner command internally. Blocked commands are now resolved recursively through/executechains before the check runs. - Fixed
/asc statsoccasionally attaching its output to the next RCON command's response due to an async delay. Console/RCON senders now get a synchronous reply; player replies remain async to avoid blocking on file I/O. - Fixed console log lines (em-dashes, box-drawing characters) rendering as garbled text on Windows consoles.
- Fixed
/locatereturning a brand-new fake location on every repeated query for the same structure, which could tip off a suspicious player. Results are now stable per player and structure. - Fixed treasure/explorer map icons visibly jumping to a new fake position on every map refresh. The fake position is now stable per map.
- Fixed unbounded memory growth in the structure reconnaissance monitor's per-chunk cache — entries are now evicted when their chunk unloads.
- Fixed a namespace-stripping bug in
extra_blocked_commandsmatching that could mismatch commands containing a colon later in the argument string. - Synced version numbers across
pom.xml,plugin.yml, andREADME.md, and removed a stale reference to a feature already removed back in 3.3.0.
- Added**
/asc toggle <feature> [true|false]— flip any protection layer on or off live, persisted toconfig.yml, no reload required.- New granular permissions:
antiseedcracker.admin.status(read-only) andantiseedcracker.admin.manage(reload/toggle) — both still covered by the existingantiseedcracker.adminpermission, so existing setups keep working unchanged. /asc help— lists only the subcommands the sender actually has permission to use.- New Command Probing Monitor: logs (never blocks — same philosophy as every other detection layer in this plugin) when a player triggers several blocked seed commands in a short window, a pattern consistent with a script or macro probing for a bypass.
structure_recon_monitor.tracked_structuresis now configurable, and now includes Buried Treasure by default.
- ~~~~
Follow-up to 3.3.0's critical world-generation fix. This release comes from a full audit pass of the codebase looking specifically for bugs, not new features.
Fixed
Thread-visibility bug: pluginConfig and databaseManager were reassigned by /asc reload on the main thread but read from PacketEvents' Netty I/O threads and the async scheduler with no volatile — no guaranteed visibility of a live config reload to those threads on a busy server. Both are now volatile.
Security-relevant bug: extra_blocked_commands entries were never lowercased at load, while the matching logic always compares against a lowercased command name. Any admin who typed a mixed-case command in config.yml had it silently fail to block. Fixed by normalizing the list once at load.
Performance regression introduced in 3.3.0: StructureReconMonitor called chunk.getStructures() on every chunk-boundary crossing for every player with no caching — the same class of large-server cost problem this whole release line exists to fix, just in new code. Now backed by a shared per-world chunk cache, so each chunk's structure lookup happens once total instead of once per player-visit. Also added ANCIENT_CITY to the tracked structure set.
I/O inefficiency: the audit logger opened and closed a fresh file handle for every single logged event. It now keeps one writer open per day, flushed per write, rotated only on date change.
Dead code removal: leftover fields/methods from the 3.3.0 removal of WorldSeedInterceptor (SeedManager.worldSeeds, assignWorldFakeSeed, getWorldFakeSeed, forgetWorld, purgeOfflinePlayers) had zero remaining callers and were deleted.