{"id":42557475,"url":"https://github.com/lasa01/Plumber","last_synced_at":"2026-02-20T03:00:28.150Z","repository":{"id":39910816,"uuid":"239194043","full_name":"lasa01/Plumber","owner":"lasa01","description":"A Blender addon for importing Source 1 engine maps, models, materials and textures.  This addon makes it possible to import full CS:GO, TF2, CS:S or other Source 1 game maps into Blender.","archived":false,"fork":false,"pushed_at":"2025-11-12T17:17:39.000Z","size":2977,"stargazers_count":468,"open_issues_count":34,"forks_count":34,"subscribers_count":12,"default_branch":"master","last_synced_at":"2026-02-10T19:48:27.686Z","etag":null,"topics":["blender","blender-addon","mdl","source-engine","vmf","vmt"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lasa01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-08T19:41:20.000Z","updated_at":"2026-02-05T16:51:51.000Z","dependencies_parsed_at":"2024-07-07T12:49:17.211Z","dependency_job_id":"33e0396c-7c22-492d-bddb-b38cda7ecb62","html_url":"https://github.com/lasa01/Plumber","commit_stats":null,"previous_names":["lasa01/io_import_vmf"],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/lasa01/Plumber","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasa01%2FPlumber","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasa01%2FPlumber/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasa01%2FPlumber/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasa01%2FPlumber/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lasa01","download_url":"https://codeload.github.com/lasa01/Plumber/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasa01%2FPlumber/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29639808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"online","status_checked_at":"2026-02-20T02:00:07.535Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blender","blender-addon","mdl","source-engine","vmf","vmt"],"created_at":"2026-01-28T20:00:26.600Z","updated_at":"2026-02-20T03:00:28.144Z","avatar_url":"https://github.com/lasa01.png","language":"Rust","funding_links":[],"categories":["⚙️ Engines"],"sub_categories":["Source (Valve)"],"readme":"# Plumber\n\nA Blender addon for importing Source 1 engine maps, models, materials and textures.\n\nThis addon makes it possible to import full CS:GO, TF2, CS:S or other Source 1 game maps into Blender.\nSource 2 games, such as CS2, are not supported.\nThe imported maps have accurate materials and overlays and correctly placed props and lights.\nSkyboxes are converted into a Blender-compatible format\nand 3D skyboxes can be easily transformed into the correct position and scale with minimal user intervention.\nNo manual game file extraction is required and installed Source games on Steam are detected automatically.\nYou just need to select the correct game and start importing.\n\nSupported file types are `.vmf`, `.mdl`, `.vmt` and `.vtf`. For a more complete overview of supported features, see [Supported features for imported assets](https://github.com/lasa01/Plumber/wiki/Supported-features-for-imported-assets).\n\n![Import dialog](img/import_dialog.png)\n\n## Table of contents\n- [Requirements](#requirements)\n- [Quick start](#quick-start)\n- [Installation](#installation)\n    - [Installing latest from source (very advanced users)](#installing-latest-from-source-very-advanced-users)\n- [Usage](#usage)\n    - [Detecting new Steam games](#detecting-new-steam-games)\n    - [Importing from old CS:GO installation](#importing-from-old-csgo-installation)\n    - [Common import options](#common-import-options)\n    - [Maps](#maps)\n    - [MDL](#mdl)\n    - [Materials](#materials)\n    - [Textures](#textures)\n    - [Game file browser](#game-file-browser)\n- [Troubleshooting](#troubleshooting)\n- [Credits](#credits)\n- [License](#license)\n\n## Requirements\n- OS: Windows recommended. Linux and macOS supported.\n- Blender: 2.90 or newer (up to version 1.1.1), 4.2 or newer (version 1.1.2 onwards).\n\n## Quick start\n- Make sure you are using Blender 2.90 or newer.\n- Install the latest release of this addon and enable it.\n- Open the Blender console to get progress updates and start importing from the `File -\u003e Import -\u003e Plumber` menu.\n\n## Installation\nYou can also follow a video tutorial, such as [this one](https://www.youtube.com/watch?v=jOJJzqOudw8) by ItsJustChris.\nIf you are using Blender 4.2 or above, you need to follow the text instructions below for installation.\nThis tutorial is recorded using a beta version, but also applies to the latest version apart from the addon installation.\n\n### Blender 4.2 and above\n- Make sure you are using Blender 4.2 or newer.\n- Download the latest extension release from the [releases](https://github.com/lasa01/Plumber/releases) tab.\nMake sure you download a file starting with `plumber-1.x.x`, not the source code.\n- Do **not** extract the downloaded files.\n- Open Blender and install the extension by dragging and dropping the downloaded .zip file into the Blender window.\n\n\u003cdetails\u003e\n\u003csummary\u003eBlender 4.1 and below\u003c/summary\u003e\n\n- Make sure you are using Blender 2.90 or newer.\n- Download the v1.1.1 addon release from the [releases](https://github.com/lasa01/Plumber/releases/tag/v1.1.1) tab.\nMake sure you download a file starting with `plumber-v1.1.1`, not the source code.\nAlso make sure that you downloaded the correct version for your operating system.\n- Do **not** extract the downloaded files.\n- Open Blender and install the addon:\n![Install addon](img/install_addon.gif)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eInstalling latest from source (very advanced users)\u003c/summary\u003e\n\nMake sure the following dependencies for building the addon are installed.\nThe links are for Windows, for other platforms you need to figure it out yourself.\n- [Python 3](https://www.python.org/downloads/) with \"Add python to environment variables\" selected in the installer\n- [Git](https://git-scm.com/download/win) with \"Git from the command line and also from 3rd-party software\" selected in the installer\n- [Rust language](https://www.rust-lang.org/tools/install) and the latest stable compiler\n- [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) with \"C++ MFC for latest build tools (x86 \u0026 x64)\" selected in the installer under individual components.\n- [CMake](https://cmake.org/download/)\n\nAfter installing the dependencies, follow the following steps:\n- Download the repository as a .zip from the green \"Code\" button in the top right corner and extract it somewhere (or alternatively, clone it). Make sure you get the master branch, not the default release branch, if you want the latest changes.\n- Run `pip install -r requirements-dev.txt` on a terminal.\n- Run `python setup.py build_rust --inplace --release`.\n- Figure out where your Blender is installed, and take note of the path of blender executable.\n- Create the `dist` directory.\n- Run `{path/to/blender} --command extension build --source-dir plumber --output-dir dist`\n- The built extension will be in the `dist` directory.\n\n\u003c/details\u003e\n\n## Usage\n\nInstalled Steam games are automatically detected on the first addon startup.\nYou can start importing immediately without any configuration required.\nJust remember to select the correct game when importing files.\n\n### Detecting new Steam games\nIf you have installed new Source games on Steam after installing the addon,\nyou will need to redetect the installed games.\nThis can be done from `Edit -\u003e Preferences -\u003e Add-ons -\u003e Plumber`\nby pressing the `Redetect installed games` button.\n\nIf you need to manually detect a game that is not installed in Steam,\nyou can use the `Detect from gameinfo.txt` button in the preferences.\n\n### Importing from old CS:GO installation\nIf you have the old CS:GO files somewhere, it is possible to manually configure\na game to import old CS:GO assets.\n\nYou need to open preferences, and use the `Detect from gameinfo.txt` button.\nThis opens a file select dialog, where you need to choose the gameinfo.txt\nfile, which is present in `csgo` directory inside the old CS:GO installation.\n\n### Common import options\n- `Game`: Select the game you're importing assets from.\n\n### Maps\n`File -\u003e Import -\u003e Plumber -\u003e Valve Map Format (.vmf)`\n\nSource maps that ship with the game are in a compiled `.bsp` file format.\nThis addon can only import them in the original `.vmf` format.\nYou can use [BSPSource](https://github.com/ata4/bspsrc) to decompile the map files into the `.vmf` format supported by this addon.\nBSPSource requires Java to be installed.\nFor CS:GO, the .bsp map files can be found inside\n`Counter-Strike Global Offensive/csgo/maps/`.\nThey can also be easily extracted using the addon's game file browser.\n\nWhen importing decompiled maps, overlay related errors\nsuch as `overlay contains invalid uv data`\nor `no geometry was imported for the sides the overlay was applied to`\ncan be safely ignored as BSPSource sometimes generates broken overlays.\n\nBlender may appear frozen for a couple of seconds when importing complex maps.\nTo see possible errors in realtime, open the Blender console from `Window -\u003e Toggle System Console` before importing.\n\nOptions:\n- `Embedded files path`: You can generally leave this empty,\nthis will be automatically detected when importing decompiled maps.\n- `Brushes`: Imports the \"core\" of the map: walls, floors etc.\n    - `Overlays`: Imports overlays that are on top of solids, such as bomb site sprays.\n    - `Epsilon`: You should not touch this.\n    - `Cut threshold`: You should not touch this.\n    - `Merge solids`: By choosing `Merge`, the importer will merge most of the map into\n    a single object. \n    This can improve performance, but makes the map harder to edit and may cause issues\n    in 3D sky transformation.\n    - `Invisible solids`: By default, invisible solids are not imported.\n    If you want, you can import them by changing this.\n- `Lights`: Imports point lights and spotlights and the environment light (the sun).\n    - `Brightness factors`: Controls how the brightnesses are converted into Blender. The default values are not fully accurate but good enough for most use cases.\n- `Sky`: Imports the skybox as the world background.\n    - `Sky output height`: Controls the quality of the imported sky.\n    The skybox is converted into a different format, so quality might suffer if this is set too low.\n    The default setting is 0, which automatically calculates an optimal resolution.\n- `Props`: Imports all complex models in the map, such as cars and crates.\n    - `Dynamic props`: The alternate options here remove more complex prop setups.\n    This is useful when exporting the map into different software,\n    since animated props may cause issues. `Remove armatures` should be usually used when exporting.\n- `Materials`: Imports materials for solids, overlays and props.\n    - See [Materials](#materials) for more options.\n- `Sky camera`: Imports the origin point of the 3D sky used in 3D skybox transforming.\n- `Unknown entities`: Imports other, unsupported entities as simple empty objects.\n- `Scale`: Adjusts the scale everything is imported at.\nThe default is 0.01, but 0.0254 can be used for a more realistic scale.\n\nTransforming the 3D sky\n- After the import has finished, you need to manually select every object that belongs to the 3D sky.\n- The 3D sky is usually clearly outside the main map area and in much smaller scale.\n- Ensure you have the 3D sky origin (sky_camera) selected as the active object, and press `Object -\u003e Transform VMF 3D sky` to transform the objects into the correct position and scale.\n\nImported metadata for external scripts / addons\n- Some extra metadata is imported as custom properties for Blender 3.0 and above.\n- This can be used by external scripts and addons to further process the imported data.\n- This includes full paths for props' models and materials as `path_id`, and Source engine-defined properties for entities as `props`.\n\n### MDL\n`File -\u003e Import -\u003e Plumber -\u003e Source Model (.mdl)`\n\nOptions:\n- `Materials`: Imports materials for the model.\n    - See [Materials](#materials) for more options.\n- `Import animations`: Imports included animations for the model.\nNote: some animations are currently unsupported.\n- `Scale`: Adjusts the scale the model is imported at.\nThe default is 0.01, but 0.0254 can be used for more realistic scale.\n\n### Materials\n`File -\u003e Import -\u003e Plumber -\u003e Valve Material Type (.vmt)`\n\nOptions:\n- `Simple materials`: You should enable this if you plan on exporting outside Blender.\nThis will disable advanced features such as blended materials.\n- `Texture format`: Selects the file format for imported textures.\nCan be changed to TGA for better import performance, at the cost of higher memory usage.\n- `Texture interpolation`: Selects the interpolation type for textures, the default value is a good choice.\n- `Allow backface culling`: You can enable this if you know you need it.\n- `Import editor materials`: Imports the materials visible inside Hammer instead of invisible materials for tool materials etc.\n\n### Textures\n`File -\u003e Import -\u003e Plumber -\u003e Valve Texture Format (.vtf)`\n\nThe texture is imported as an image in Blender, and is not immediately visible after import.\nIt can be used in materials with a Image Texture node, for example.\n\n### Game file browser\n\nGame file browser allows you to import models, materials or textures straight from the game files,\nor to extract any game files.\n\nCan be accessed from the 3D view side bar under Plumber (recommended),\nor alternatively from `File -\u003e Import -\u003e Plumber -\u003e Browse game files`.\n\nThe browser only browser supported file types by default.\nThis can be changed to display all files by opening the arrow on the lower left corner of the file list.\n\n### Programmatic API\n\nYou can use Plumber from your own Blender Python scripts or other addons/extensions via its programmatic API. See [plumber/api/README.md](plumber/api/README.md) for details and usage examples.\n\n## Troubleshooting\nThe [FAQ](https://github.com/lasa01/Plumber/wiki/FAQ-(Plumber)) has instructions for dealing with some common problems and errors.\n\nIf you can't find your problem there, you can ask on the [AGR TechSupport Discord's](https://discord.gg/wd8Rcdj) #blender channel or open a new issue.\nWhen asking for help, always remember to open the Blender console from `Window -\u003e Toggle System Console` before importing and to send the console logs afterwards with the help request by copy-pasting.\n\n## Credits\n- Me for the addon, [backing library](https://github.com/lasa01/plumber_core) and [VTFLib wrapper](https://github.com/lasa01/vtflib2-rs).\n- Nemesis for original [VTFLib](https://github.com/NeilJed/VTFLib) and panzi for a Linux-compatible port, and me for a version that is easier to run multi-threaded.\n\nMDL reading is based on:\n- ZeqMacaw's [Crowbar](https://steamcommunity.com/groups/CrowbarTool)\n- REDxEYE's [SourceIO](https://github.com/REDxEYE/SourceIO)\n- Artfunkel's [Blender Source Tools](http://steamreview.org/BlenderSourceTools/)\n\nSkybox conversion is based on:\n- Alex Flint and Pete Florence's [bilinear interpolation code](https://stackoverflow.com/a/12729229).\n- adamb70's [Python-Spherical-Projection](https://github.com/adamb70/Python-Spherical-Projection).\n\nAlso thanks to:\n- Devostated for testing and bug reporting.\n- Everyone else who reported bugs or suggested improvements.\n\n## License\nCopyright (C) 2024 Lassi Säike\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flasa01%2FPlumber","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flasa01%2FPlumber","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flasa01%2FPlumber/lists"}