wow-adt

Crates.iowow-adt
lib.rswow-adt
version0.3.2
created_at2025-06-14 01:35:58.788161+00
updated_at2025-08-29 03:59:00.247319+00
descriptionParser for World of Warcraft ADT terrain files with heightmap and texture layer support
homepagehttps://github.com/wowemulation-dev/warcraft-rs
repositoryhttps://github.com/wowemulation-dev/warcraft-rs
max_upload_size
id1712019
size459,309
WoW Emulation Panda King (wowemulation-panda)

documentation

https://docs.rs/wow-adt

README

wow-adt

Parser for World of Warcraft ADT (terrain) files.

Crates.io Version docs.rs License

Status

Production Ready - Full parsing and validation support for ADT terrain files.

Overview

ADT files contain terrain and object information for WoW map tiles. Each map in World of Warcraft is divided into 64x64 tiles, with each tile stored as an ADT file.

Features

  • Full ADT Parsing - Read and parse all chunk types
  • Version Support - Classic through Cataclysm+
  • Validation - Comprehensive validation with multiple strictness levels
  • Version Conversion - Convert between different WoW versions
  • Split File Support - Handle Cataclysm+ split ADT files (_tex0,_obj0, etc.)
  • Tree Visualization - Visualize ADT structure hierarchically
  • Extract Support (optional) - Extract heightmaps, textures, and model references
  • Parallel Processing (optional) - Batch process multiple ADT files

Supported Versions

  • ✅ Classic (1.12.1)
  • ✅ The Burning Crusade (2.4.3)
  • ✅ Wrath of the Lich King (3.3.5a)
  • ✅ Cataclysm (4.3.4)
  • ⚠️ Mists of Pandaria (5.4.8) - Basic support, may need updates

Installation

Add to your Cargo.toml:

[dependencies]
wow-adt = "0.3.0"

Or use cargo add:

cargo add wow-adt

Usage

Basic Parsing

use wow_adt::{Adt, AdtVersion};

// Parse an ADT file
let adt = Adt::from_path("path/to/terrain.adt")?;

// Get version information
println!("ADT Version: {:?}", adt.version());

// Access terrain chunks
println!("Terrain chunks: {}", adt.mcnk_chunks().len());

// Check for water data
if let Some(water) = adt.mh2o() {
    println!("Contains water data");
}

Validation

use wow_adt::{Adt, ValidationLevel};

let adt = Adt::from_path("terrain.adt")?;

// Basic validation
adt.validate()?;

// Detailed validation with report
let report = adt.validate_with_report(ValidationLevel::Strict)?;
if !report.errors.is_empty() {
    for error in &report.errors {
        eprintln!("Error: {}", error);
    }
}

Version Conversion

use wow_adt::{Adt, AdtVersion};

let adt = Adt::from_path("vanilla_terrain.adt")?;

// Convert to Cataclysm format
let cata_adt = adt.to_version(AdtVersion::Cataclysm)?;

// Write to file
use std::fs::File;
use std::io::BufWriter;

let file = File::create("cata_terrain.adt")?;
let mut writer = BufWriter::new(file);
cata_adt.write(&mut writer)?;

CLI Usage

The ADT functionality is integrated into the warcraft-rs CLI:

# Show ADT file information
warcraft-rs adt info terrain.adt

# Validate an ADT file
warcraft-rs adt validate terrain.adt --level strict

# Convert between versions
warcraft-rs adt convert input.adt output.adt --to cataclysm

# Visualize ADT structure
warcraft-rs adt tree terrain.adt --show-refs

License

Licensed under either of

at your option.

Commit count: 125

cargo fmt