This guide covers the ADT (terrain) commands available in the warcraft-rs CLI tool.
The ADT command provides tools for working with World of Warcraft terrain files, including parsing, validation, conversion, and visualization.
Ensure you have the ADT feature enabled when building warcraft-rs:
cargo install warcraft-rs --features adt
# Or for all features:
cargo install warcraft-rs --features fullDisplay detailed information about an ADT file:
# Basic information
warcraft-rs adt info terrain.adt
# Detailed chunk information
warcraft-rs adt info terrain.adt --detailedOutput includes:
- File version and format
- Terrain chunk count and height range
- Texture references
- Model and WMO placements
- Water information
- Split file detection (Cataclysm+)
Check ADT files for errors and inconsistencies:
# Standard validation
warcraft-rs adt validate terrain.adt
# Strict validation with warnings
warcraft-rs adt validate terrain.adt --level strict --warnings
# Basic validation (faster)
warcraft-rs adt validate terrain.adt --level basicValidation levels:
- basic: Essential structure checks
- standard: Full validation (default)
- strict: All checks including best practices
Convert ADT files between different WoW versions:
# Convert to Cataclysm format
warcraft-rs adt convert vanilla.adt cataclysm.adt --to cataclysm
# Convert to WotLK format
warcraft-rs adt convert cata.adt wotlk.adt --to wotlk
# Supported versions: classic, tbc, wotlk, cataclysmVersion conversion handles:
- Chunk format changes
- Water system updates (MCLQ → MH2O)
- Version-specific features
- Data preservation where possible
Visualize ADT structure hierarchically:
# Basic tree view
warcraft-rs adt tree terrain.adt
# Show external file references
warcraft-rs adt tree terrain.adt --show-refs
# Compact view
warcraft-rs adt tree terrain.adt --compact
# Limit depth
warcraft-rs adt tree terrain.adt --depth 2
# No colors (for piping)
warcraft-rs adt tree terrain.adt --no-colorTree view shows:
- 🏔️ Root ADT file with version info
- 📋 Header chunks (MHDR, MCIN)
- 🌍 Terrain chunks (MCNK) with coordinates and properties
- 🎨 Texture references (MTEX) - lists actual texture filenames
- 🌲 Model data (MMDX/MMID) - shows M2 model filenames with indices
- 🏛️ WMO data (MWMO/MWID) - displays WMO filenames
- 📍 Placements (MDDF/MODF) - shows count of placed objects
- 💧 Water chunks (MH2O) with water chunk count
The enhanced tree view now displays the actual content of texture, model, and WMO chunks, showing filenames and counts rather than just chunk presence.
Extract data from ADT files (requires extract feature):
# Extract heightmap
warcraft-rs adt extract terrain.adt --heightmap --output ./extracted
# Extract with specific format
warcraft-rs adt extract terrain.adt --heightmap --heightmap-format png
# Extract texture information
warcraft-rs adt extract terrain.adt --textures
# Extract model placements
warcraft-rs adt extract terrain.adt --models
# Extract everything
warcraft-rs adt extract terrain.adt --allSupported heightmap formats:
- pgm: Portable GrayMap (default)
- png: PNG image
- tiff: TIFF image
- raw: Raw float data
Process multiple ADT files (requires parallel feature):
# Validate all ADT files
warcraft-rs adt batch "World/Maps/Azeroth/*.adt" --output ./results --operation validate
# Convert multiple files
warcraft-rs adt batch "*.adt" --output ./converted --operation convert --to cataclysm
# Use specific thread count
warcraft-rs adt batch "**/*.adt" --output ./output --operation validate --threads 8Cataclysm+ uses split ADT files:
# Main terrain file
warcraft-rs adt info Azeroth_32_48.adt
# Texture data
warcraft-rs adt info Azeroth_32_48_tex0.adt
# Object placement
warcraft-rs adt info Azeroth_32_48_obj0.adtThe tool automatically detects and reports related split files.
# Get overview of Elwynn Forest tile
warcraft-rs adt info World/Maps/Azeroth/Azeroth_32_48.adt
# Check for issues
warcraft-rs adt validate World/Maps/Azeroth/Azeroth_32_48.adt --warnings
# Visualize structure
warcraft-rs adt tree World/Maps/Azeroth/Azeroth_32_48.adt --show-refs# Convert Classic ADT to Cataclysm format
warcraft-rs adt convert classic_terrain.adt cata_terrain.adt --to cataclysm
# Batch convert entire zone
warcraft-rs adt batch "Kalimdor/*.adt" --output ./cata_kalimdor --operation convert --to cataclysm# Extract heightmap for terrain editing
warcraft-rs adt extract terrain.adt --heightmap --heightmap-format tiff
# Extract all texture references
warcraft-rs adt extract terrain.adt --textures --output ./texture_data
# Get model placement data
warcraft-rs adt extract terrain.adt --models --output ./model_data- Validation First: Always validate ADT files before conversion
- Backup Files: Keep original files when converting versions
- Check Split Files: For Cataclysm+, ensure all split files are present
- Use Appropriate Formats: Choose heightmap format based on your editing tool
- Batch Operations: Use glob patterns for processing multiple files
- Thread Count: For batch operations, use thread count = CPU cores - 1
"Failed to parse ADT file"
- Check file is not corrupted
- Ensure it's a valid ADT file (not WDT/WDL)
- Try basic validation first
"Version conversion failed"
- Some features can't be converted backwards
- Check source and target version compatibility
- Validate source file first
"Extract command not available"
- Install with
--features extractor--features full - Check feature is enabled in your build
- Use
--compactfor tree view on large files - Limit
--depthfor quick structure overview - Use
parallelfeature for batch operations - Process files from local disk, not network drives
- ADT Format Documentation
- ADT Rendering Guide
- Coordinate System
- MPQ Archive Usage - Extract ADT files from game data