Cryptographic structure seed protection for Paper/Spigot servers.
中文 | English
SeedShield prevents seed cracking tools (chunkbase, SeedCrackerX, Structurecracker) from determining structure locations by replacing each structure type's placement salt with an irreversible SHA-256 derived value. Can work in main world / nether / end world.
This is the first Paper/Spigot plugin to provide cryptographic structure seed protection. Previously, this level of protection was only available through Fabric mods or custom server forks.
Minecraft determines structure positions using this formula:
position = f(worldSeed, regionCoords, salt)
The salt is a hardcoded integer per structure type. Tools like chunkbase know these default salts, so knowing the world seed = knowing all structure locations.
SeedShield replaces each salt with:
salt = SHA-256(secretKey + ":" + worldSeed + ":" + structureType)[0..4]
- Per-structure isolation: Each structure type gets a unique cryptographic salt. Cracking one type's salt reveals nothing about others.
- Secret key protection: Without the 256-bit key (stored in
config.yml), salts cannot be reversed. - Stronghold protection: Also modifies
concentricRingsSeedand recalculates ring positions.
- Download
SeedShield-1.0.0.jarfrom Releases - Place it in your server's
plugins/folder - Delete the region files of worlds you want to protect (structures must regenerate)
- Restart the server
- Edit
plugins/SeedShield/config.ymlto configure which worlds to protect
Important: SeedShield only affects newly generated chunks. Existing structures in already-generated chunks will not change positions.
# Auto-generated 256-bit secret key. DO NOT SHARE.
secret-key: "a1b2c3d4..."
# Worlds to protect
enabled-worlds:
- world
- survival- Paper 1.20.5+ (or forks: Leaves, Purpur, Folia, etc.)
- Java 17+
Note: Versions 1.20.4 and below are not supported. Paper switched to Mojang mappings starting from 1.20.5, which this plugin relies on for reflection.
| Attack Vector | Protection Level |
|---|---|
| chunkbase / online seed maps | ✅ Fully defeated |
| SeedCrackerX client mod | ✅ Defeated (combine with FakeSeed for hashed seed) |
| Brute-force single structure salt (2³² attempts) | |
| Reverse secret key from salt | ✅ Infeasible (SHA-256 preimage resistance) |
| Cross-structure salt derivation | ✅ Impossible without key |
git clone https://github.com/7yunluo/SeedShield.git
cd SeedShield
mvn packageThe JAR will be at target/SeedShield-1.0.0.jar.
MIT License