FAWEReplace
Replace blocks and entities for large regions using the FAWE API.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
FAWEReplace
FAWEReplace
Introduction
FAWEReplace is a high-performance Paper plugin designed for large-scale Minecraft world cleanup tasks. Built on FastAsyncWorldEdit (FAWE)'s asynchronous capabilities, it efficiently handles bulk block replacement and entity removal operations.
Prerequisite
FastAsyncWorldEdit (FAWE)
Tutorial
Commands
* start/continue cleaning: `/frl start` * start new cleaning task: `/frl start --fresh` * stop cleaning: `/frl stop` * check cleaning progress: `/frl status` * tutorial: `/frl help` * reload: `/frl reload`
Configuration
```yaml language: zh_CN # or en_US
Target region coordinates
world: "world" target: start: x: -1000 z: -1000
y: -64 # Optional: auto use full world height if not set
end: x: 1000 z: 1000
y: 320 # Optional: auto use full world height if not set
Auto-start on plugin enable
!Warning: Recommend keeping false, manual start is safer
confirm: false
Performance Configuration
Number of parallel processing threads
!Important: Choose value based on your use case
#
Server with players online:
- 2GB RAM: 1-2 threads
- 4GB RAM: 2-3 threads
- 5GB RAM: 2-3 threads (recommended: 2)
- 8GB+ RAM: 3-5 threads
#
Offline processing (maximum performance):
- 4GB RAM: 4-6 threads
- 5GB RAM: 6-8 threads
- 8GB RAM: 8-12 threads
- 16GB+ RAM: 12-16 threads
# parallel: 2
Region/Tile size
Size of region each worker thread processes
Larger values = fewer tiles but longer processing time per tile
region: x: 512 z: 512
y: 256 # Optional: auto-calculated if not set
Processing Modes
Tiling mode
When enabled, splits large regions into smaller tiles for parallel processing
tiling: enabled: true
Fast mode
Uses FAWE's fast asynchronous processing
fast-mode: true
Progress log frequency
Output progress log every N tiles processed
Tip:
- Online server: 50-100 (more detailed progress)
- Offline processing: 100-200 (reduce log overhead)
progress-log-every: 100
Safety Options
Skip ungenerated chunks
Highly recommended to keep enabled
#
Features:
- Only process chunks visited by players
- Avoid generating new empty chunks
- Prevent heightmap warnings
- Improve performance
# skip-ungenerated-chunks: true
Auto-repair chunk heightmaps
Recommended to prevent black chunks in MCA Selector
#
Features:
- Auto-refresh heightmap after block replacement
- Prevent black chunks in MCA Selector
- Minimal performance impact
auto-fix-heightmap: true
Memory Protection
Prevent OutOfMemoryError crashes
memory-protection:
Enable automatic memory monitoring
Recommended: Must enable for online servers
Offline processing: Can disable for max speed (with crash risk)
enabled: true
Minimum free memory percentage (0.0-1.0)
Pause processing when free memory falls below this
#
!Recommended values:
Online server: 0.20-0.25 (20-25%, safer)
Offline processing: 0.10-0.15 (10-15%, aggressive)
min-free-memory-percent: 0.20
Wait time when memory is low (milliseconds)
!Recommended values:
Online server: 5000 (5 seconds)
Offline processing: 2000-3000 (2-3 seconds)
wait-on-low-memory-ms: 5000
Maximum retries when memory is consistently low
Set to -1 for unlimited retries (not recommended)
max-memory-retries: 10
Performance Throttling
Add delays between operations to reduce server load
!IMPORTANT:
Server with players: Use moderate delays
Offline processing: Set all to 0 for maximum speed (10-40% faster!)
performance:
Delay between chunk processing batches (milliseconds)
Recommended values:
Offline: 0 (最大速度 / max speed)
Online-light: 50-100
Online-heavy: 100-200
delay-between-batches-ms: 100
Delay between individual chunk operations (milliseconds)
Recommended values:
Offline: 0 (max speed)
Online: 10-20
delay-between-chunks-ms: 20
Force garbage collection frequency
Execute GC every N chunks processed
Recommended values:
Offline: 0 (let JVM auto-manage, fastest)
Memory issues: 100-200
!Note: 0 is usually best, JVM's GC optimization is more efficient
gc-every-chunks: 50
Resume/Checkpoint System
Save progress to resume after interruption
resume:
Enable resume/checkpoint
Recommended: keep enabled
enabled: true
Progress file name
Saved in plugin data folder
file: "progress.yml"
Save frequency
Save progress every N tiles processed
Recommended values:
- Online server: 25 (save more frequently)
- Offline processing: 100 (reduce I/O overhead)
save-every: 25
Block Replacement Rules
Define which block types to replace
IMPORTANT WARNING:
X Do NOT replace common building blocks (like STONE, DIRT, WOOD, etc.)
O Only replace blocks you want to clean (containers, machines, etc.)
#
Format:
- origin: <Bukkit Material name>
target: <Target block, usually AIR>
#
Full material list:
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
blocks: - origin: SHULKER_BOX target: AIR - origin: YELLOW_SHULKER_BOX target: AIR - origin: GREEN_SHULKER_BOX target: AIR - origin: PURPLE_SHULKER_BOX target: AIR - origin: DISPENSER target: AIR - origin: ORANGE_SHULKER_BOX target: AIR - origin: FURNACE target: AIR - origin: BLACK_SHULKER_BOX target: AIR - origin: LIME_SHULKER_BOX target: AIR - origin: HOPPER target: AIR - origin: GRAY_SHULKER_BOX target: AIR - origin: RED_SHULKER_BOX target: AIR - origin: LIGHT_BLUE_SHULKER_BOX target: AIR - origin: BREWING_STAND target: AIR - origin: BROWN_SHULKER_BOX target: AIR - origin: BARREL target: AIR - origin: CAMPFIRE target: AIR - origin: LIGHT_GRAY_SHULKER_BOX target: AIR - origin: TRAPPED_CHEST target: AIR - origin: DROPPER target: AIR - origin: WHITE_SHULKER_BOX target: AIR - origin: CHEST target: AIR - origin: SOUL_CAMPFIRE target: AIR - origin: BLUE_SHULKER_BOX target: AIR - origin: MAGENTA_SHULKER_BOX target: AIR - origin: PINK_SHULKER_BOX target: AIR - origin: CYAN_SHULKER_BOX target: AIR - origin: BLAST_FURNACE target: AIR - origin: SMOKER target: AIR
Entity Cleanup
Remove specified entity types
!Note:
- Use carefully! May remove players' items, mobs, etc.
- Recommend testing on a test server first
entities:
Enable entity cleanup
enabled: false
Full list:
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/EntityType.html
# types: []
Examples:
- ITEM # Remove dropped items
- ZOMBIE # Remove zombies
- ARMOR_STAND # Remove armor stands
```