| Crates.io | vmf-forge |
| lib.rs | vmf-forge |
| version | 0.4.1 |
| created_at | 2024-12-31 15:28:46.669067+00 |
| updated_at | 2025-07-25 07:50:57.656178+00 |
| description | A parser for Valve Map Format (VMF) files |
| homepage | |
| repository | https://github.com/IaVashik/vmf-forge |
| max_upload_size | |
| id | 1500123 |
| size | 5,949,475 |
vmf-forge is a Rust library for parsing, manipulating, and serializing Valve Map Format (VMF) files used in Source Engine games.Add vmf-forge to your Cargo.toml:
[dependencies]
vmf-forge = "0.4.0"
use vmf_forge::prelude::*;
use std::fs::File;
fn main() -> Result<(), VmfError> {
let mut file = File::open("your_map.vmf")?;
let vmf_file = VmfFile::parse_file(&mut file)?;
// Access and modify the VMF data
println!("Map Version: {}", vmf_file.versioninfo.map_version);
// Find info_player_start entity
if let Some(player_start) = vmf_file.entities.find_by_classname("info_player_start").next() {
println!("Found player start: {:?}", player_start);
}
// Add a new entity
let mut new_entity = Entity::default();
new_entity.key_values.insert("classname".to_string(), "prop_static".to_string());
new_entity.key_values.insert("model".to_string(), "models/props_foliage/urban_tree001a.mdl".to_string());
new_entity.key_values.insert("origin".to_string(), "0 0 0".to_string());
vmf_file.entities.push(new_entity);
// Save the modified VMF file
vmf_file.save("modified_map.vmf")?;
Ok(())
}
Contributions are welcome! Please feel free to open issues or submit pull requests.
vmf-forge is distributed under the terms of either the MIT license.