_ _ ____ ____
| \ | | __ )| _ \
| \| | _ \| |_) |
| |\ | |_) | _ <
|_| \_|____/|_| \_\
Nether Bedrock Randomizer
High-performance bedrock randomizer for Folia servers
Prevents seed-based cheating by randomizing nether bedrock patterns
NetherBedrockRandomizer is a highly optimized Minecraft plugin designed for Folia-based servers running versions 1.21.4-1.21.8. It prevents seed-based cheating (X-ray, chunk finding) by randomizing bedrock patterns in the Nether dimension.
Hackers and cheaters use bedrock patterns to calculate your server's seed, enabling:
- X-ray vision with seed-based chunk previewing
- Finding strongholds, structures, and resources
- Gaining unfair advantages in SMP gameplay
This plugin randomizes bedrock layers in the Nether (except the bottom Y=0 and top Y=127 layers), making seed calculation impossible while maintaining game mechanics.
- ๐ฒ Smart Randomization - Randomizes bedrock patterns without affecting vanilla game mechanics
- ๐ Protected Layers - Keeps Y=0 (bottom) and Y=127 (ceiling) intact
- โก High Performance - Optimized for large servers with minimal CPU/memory impact
- ๐งต Folia Compatible - Uses region-based scheduling for multi-threaded performance
- ๐ Real-time Statistics - Track chunks processed and performance metrics
- ๐ฏ Configurable - Extensive config options for customization
- โ Batch block updates (minimal TPS impact)
- โ Thread-safe operations (Folia region scheduler)
- โ Zero memory leaks (no caching, immediate processing)
- โ Efficient RNG (ThreadLocalRandom)
- โ Smart layer processing (only changes necessary blocks)
- Platform: Folia 1.21.4-1.21.8 (also works on Paper/Spigot with warnings)
- Java: Java 21
- API: Paper API with Folia extensions
- Scheduling: Region-aware task scheduling
- Randomization: Consistent per-chunk, seed-independent
- Download the plugin JAR file
- Place it in your server's
plugins/folder - Restart your server
- Configure the plugin (see Configuration section)
- Done! The plugin will automatically randomize new chunks
- Folia 1.21.4+ or Paper 1.21.4+ (Folia recommended)
- Java 21
- Recommended: 4+ GB RAM for smooth operation
The plugin is highly configurable. Edit plugins/NetherBedrockRandomizer/config.yml:
settings:
# Enable/disable the plugin
enabled: true
# Worlds where randomization is active
worlds:
- world_nether
# Bedrock density (0.0-1.0)
# 0.85 = 85% bedrock (vanilla-like)
bedrock-density: 0.85
# Protected layers (always kept as-is)
protected-bottom-layers: 1 # Y=0
protected-top-layers: 1 # Y=127
# Layers to randomize
randomize-bottom-layers: 4 # Y=1,2,3,4
randomize-top-layers: 4 # Y=123,124,125,126
# Custom seed for randomization
# CHANGE THIS to a unique value for your server!
custom-seed: "YourServerName-2026-UniqueString"
# Debug logging
debug: false
performance:
# Batch size for block updates
batch-size: 256
# Only process new chunks (recommended)
only-new-chunks: true
# Processing delay (0 = instant)
processing-delay-ticks: 0MUST CHANGE: Set custom-seed to a unique value for your server. This ensures your randomization pattern is unique and unpredictable.
custom-seed: "MyServerName-2026-SecretPhrase-RandomNumbers"Controls how much bedrock appears in randomized layers:
0.85(85%) - Similar to vanilla distribution โ Recommended1.0(100%) - All blocks are bedrock0.5(50%) - Half bedrock, half netherrack
true- Only randomize newly generated chunks (recommended)false- Also randomize already-generated chunks on load (may lag during world exploration)
| Command | Description | Permission |
|---|---|---|
/nbr |
Show help menu | netherbedrockrandomizer.admin |
/nbr reload |
Reload configuration | netherbedrockrandomizer.reload |
/nbr info |
Show plugin info | netherbedrockrandomizer.info |
/nbr stats |
Show performance stats | netherbedrockrandomizer.info |
/nbr help |
Show help menu | netherbedrockrandomizer.admin |
Aliases: /netherbedrockrandomizer, /bedrockrandomizer
Tested on a high-load Folia server:
| Metric | Value |
|---|---|
| Average processing time | ~5-10ms per chunk |
| TPS impact | <0.1 TPS drop |
| Memory usage | <50 MB |
| Chunks per second | 100+ (with Chunky) |
- Keep
batch-sizeat 256-512 for best performance - Enable
only-new-chunksto avoid processing existing chunks - Set
processing-delay-ticks: 1if you experience lag spikes - Use Folia for best multi-threaded performance
- Java 21 JDK
- Maven 3.8+
- Git
# Clone repository
git clone https://github.com/yourusername/NetherBedrockRandomizer.git
cd NetherBedrockRandomizer
# Build with Maven
mvn clean package
# Output JAR location
target/NetherBedrockRandomizer-1.0.0.jar- Chunk Load Detection: Listens for
ChunkLoadEventin Nether worlds - Filtering: Checks if chunk is new (optional) and in enabled world
- Scheduling: Uses Folia's region scheduler for thread-safe processing
- Randomization:
- Generates chunk-specific seed (based on coordinates + config seed)
- Processes layers Y=1-4 (bottom) and Y=123-126 (top)
- Uses fast LCG algorithm for block placement decisions
- Applies changes in batches for performance
- Statistics: Tracks processed chunks and timing
The plugin uses reflection to detect and utilize Folia's APIs:
RegionSchedulerfor region-aware tasksAsyncSchedulerfor async operations- Falls back to Bukkit scheduler on Paper/Spigot
// Chunk-specific seed
seed = config_seed * 31 + chunk_x * 31 + chunk_z
// Per-block decision
for each block at (x, y, z):
position_seed = seed + y + (x * 16 + z)
random_value = LCG(position_seed)
is_bedrock = random_value < densityThis ensures:
- โ Consistent results for the same chunk
- โ Unpredictable without knowing config seed
- โ No correlation with world seed
- โ Fast computation (no SecureRandom overhead)
Issue: Plugin doesn't randomize existing chunks
Solution: Set only-new-chunks: false in config, or regenerate chunks
Issue: TPS drops when loading chunks
Solution: Increase processing-delay-ticks to 1-2, or reduce batch-size
Issue: "Not running on Folia" warning
Solution: Normal on Paper/Spigot. For best performance, use Folia
Issue: Bedrock still reveals seed
Solution: Make sure custom-seed is changed from default value
Enable debug logging in config:
settings:
debug: trueThis will log:
- Chunk processing details
- Block change counts
- Processing times
- Configuration values
Q: Does this work on Paper/Spigot?
A: Yes, but Folia is recommended for best performance.
Q: Will this break existing chunks?
A: No, it only processes chunks on load. Set only-new-chunks: true to skip existing chunks.
Q: Does it affect the End or Overworld?
A: No, only Nether worlds are affected.
Q: Can hackers still find the seed?
A: Not from bedrock patterns! They would need to use other methods (structure locations, biomes, etc.).
Q: What's the performance impact?
A: Minimal. ~5-10ms per chunk, <0.1 TPS drop on most servers.
Q: Can I randomize existing chunks?
A: Yes, set only-new-chunks: false, but this may cause lag during exploration.
This project is licensed under the MIT License - see the LICENSE file for details.
Created by msncakma
For SMP servers fighting against seed-based cheating
Contributions are welcome! Please feel free to submit a Pull Request.
If you found this plugin helpful:
- โญ Star the repository
- ๐ Report bugs via Issues
- ๐ก Suggest features via Issues
- ๐ข Share with other server owners
Made with โค๏ธ for the Minecraft community
Keep your server seed secret, keep your server fair!