DH Rescue
Recover Minecraft terrain from Distant Horizons LOD databases when the original world or region files are missing or damaged.
IMPORTANT: Always back up the target world before starting a restoration.
DH Rescue overwrites blocks in the selected area, including with air. Cancelling does not undo blocks that have already been placed.
Features
- Recovers block states from an active or external Distant Horizons database
- Keeps the active DH database in read-only mode while it is selected
- Shows a color-coded preview before changing the world
- Requires explicit confirmation before a restoration starts
- Provides configurable block and speed limits
- Reports progress, missing columns, and invalid block states
- Supports negative coordinates and every valid build height of the current dimension
- Reads FullData format 2 with uncompressed, LZ4, Zstd stream, XZ/LZMA2, and Zstd block compression
Requirements
| Requirement | Version |
|---|---|
| Minecraft Java Edition | 26.2 |
| Java | 25 or newer |
| Fabric Loader | 0.19.5 or newer |
| Fabric API | 0.161.0+26.2 or newer |
| Distant Horizons | 3.3.2 or newer |
DH Rescue is a client-side single-player recovery tool. It operates through Minecraft's integrated server and is not intended for dedicated or remote multiplayer servers.
Quick start
Option A: Use the active Distant Horizons database
Open the correct world and dimension, then run:
/dhrescue source active
The selected active database is used in read-only mode.
Option B: Use an external database
Start Minecraft once so DH Rescue creates:
.minecraft/dhrescue/import/Copy the
.sqlitedatabase into that directory.If matching
-walor-shmfiles exist, copy them as well. They may contain recent database changes.Open the correct target world and dimension, or create a new world.
Select the database:
/dhrescue source external "DistantHorizons.sqlite"
Select and restore an area
Both corner coordinates are inclusive:
/dhrescue restore <x1> <y1> <z1> <x2> <y2> <z2>
Review the displayed coordinates, dimension, and block count. Click the [ CONFIRM ] button or run the following command within 60 seconds:
/dhrescue confirm
Monitor or stop the job with:
/dhrescue status
/dhrescue cancel
Commands
| Command | Description |
|---|---|
/dhrescue source |
Shows the currently selected source. |
/dhrescue source active |
Selects the active world's DH database in read-only mode. |
/dhrescue source external "<file>" |
Selects a .sqlite file from the import directory. |
/dhrescue restore <x1> <y1> <z1> <x2> <y2> <z2> |
Previews an inclusive restoration area. |
/dhrescue confirm |
Starts the pending restoration. |
/dhrescue status |
Shows the current state and progress counters. |
/dhrescue cancel |
Stops the active restoration. Already placed blocks remain. |
/dhrescue limit |
Shows the current maximum block count. |
/dhrescue limit <block_count> |
Changes the maximum block count. |
/dhrescue speed |
Shows the current and maximum restoration speed. |
/dhrescue speed <blocks_per_tick> |
Changes the restoration speed. |
Limits and performance
- The default block limit is 100,000,000 blocks.
- The default speed is 8,192 blocks per tick.
- Valid speeds range from 1 to 50,000 blocks per tick.
- Values above the default can reduce server TPS and client FPS.
- Settings are stored in
.minecraft/config/dhrescue.propertiesand persist across restarts. - Changing the block limit clears a pending selection for safety.
Recommended recovery workflow
- Work on a copy of the damaged world.
- Confirm that the target dimension matches the database.
- Test a small area first.
- Check
/dhrescue statusfor missing columns or invalid block states. - Increase the selected area gradually.
- Lower the speed if the game stalls or loses TPS.
- Keep the source database and its
-wal/-shmfiles until the recovery is complete.
Troubleshooting
| Problem | Cause and solution |
|---|---|
| Distant Horizons or its terrain API is not ready | Confirm that the required DH version is installed, open a single-player world, wait for it to finish loading, and try again. |
| Database file not found | Place the file directly inside .minecraft/dhrescue/import/ and use its exact file name. Subdirectories are not accepted. |
| Selected file format is not supported | Use a .sqlite file containing supported Distant Horizons FullData format 2 data. |
| Missing FullData columns | The file is not a compatible DH database or the copy is incomplete. Copy the matching -wal and -shm files too. |
| Selection exceeds build height | Keep both Y coordinates inside the minimum and maximum build height shown for the current dimension. |
| Selection exceeds the world border | Keep X and Z between -30,000,000 and 29,999,999. |
| Selection exceeds the block limit | Choose a smaller area or raise the limit with /dhrescue limit <block_count>. |
| No valid selection to confirm | The preview expired, the source changed, or no preview exists. Run /dhrescue restore ... again. |
| Low TPS, freezing, or low FPS | Reduce the speed, for example with /dhrescue speed 4096. |
| Missing columns in the status | The source database has no block-resolution terrain data for those coordinates. Those columns are skipped. |
| Invalid block states in the status | A block or mod may no longer be installed. Unsupported states are restored as air. |
| Restored terrain is in the wrong vertical position | External databases do not reliably identify their dimension. Open the matching target dimension before restoring. |
What DH Rescue can restore
DH Rescue reconstructs block states stored in Distant Horizons LOD terrain data. It is a best-effort recovery process rather than a complete world backup.
What DH Rescue cannot restore
- Chest contents and other block-entity NBT
- Entities and mobs
- Biomes and structure metadata
- Scheduled block or fluid ticks
- Player progress
- Other
level.datdata - Detail that was discarded by Distant Horizons LOD compression
Why does the recovered terrain differ from the original?
Distant Horizons stores level-of-detail terrain rather than a complete copy of every Minecraft chunk. Visually compressed or missing LOD data cannot be reconstructed exactly.
Can I undo a restoration?
No. Cancelling only stops future block placement. Restore into a backed-up copy of the world so you can revert safely.

