MCPcopy Index your code
hub / github.com/ata4/bspsrc

github.com/ata4/bspsrc @v1.4.8

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.4.8 ↗ · + Follow
1,812 symbols 5,241 edges 285 files 319 documented · 18%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

BSPSource

BSPSource is a map decompiler for Source engine maps, written in Java. It decompiles .bsp map files back to .vmf files that can be loaded in Hammer, Valve's official level editor.

BSPSource is based on a reengineered version of VMEX 0.98g by Rof, which is no longer developed and lacks support for newer Source engine games.

Running BSPSource

  1. Go to the releases page and, depending on your operating system, download either bspsrc-linux.zip or bspsrc-windows.zip. Alternatively, bspsrc-jar-only.zip works on any system that has Java 24+ installed and properly configured.
  2. Extract the contents of the zip file to a new folder.
  3. To launch bspsrc/bspinfo, run the corresponding file: bspsrc.bat/bspinfo.bat on Windows, or bspsrc.sh/bspinfo.sh on Linux.

Frequently asked Questions

  • Can you support \<game>: Generally speaking, most Source engine games should work with BSPSource out of the box, even though they might not be explicitly "supported". If you run into any problems or errors with any particular game/map, feel free to open an Issue.\ Games based on the older goldsrc or on the newer Source 2 engine, are not supported. Their map format wildly differs from the one the Source engine uses.
  • Help, all the textures are gray/models are errors: Most of the time this is due to the materials/models not existing in the base game but rather being embedded in the bsp file. This can frequently happen with workshop maps or with maps using csgo's automcombine prop feature. To make the materials/models visible in hammer, you need to extract the embedded files by checking Extract embedded files in the decompiler and then move the contents of the extracted material/model folders into your games material/model folder.

Limitations and known bugs

Improvements and changes compared to VMEX 0.98g

  • Support for more and newer Source engine games up to Dota 2.
  • Support for new entity types:
  • Support for the tools/blocklight texture.
  • Support for compressed and big-endian encoded maps (XBox 360, PS3)
  • Decompiles VMEX maps flagged with protection and at least detects other anti-decompiling methods.
  • Improved support for prop_static and info_overlay.
  • Improved console output.
  • New graphical user interface with output window.
  • New command line interface.
  • New integrated pakfile extractor.
  • Numerous bug fixes.
  • Open source.

Extension points exported contracts — how you extend this code

DStruct (Interface)
Generic interface for classes that emulate C/C++ structures. @author Nico Bergemann [96 implementers]
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/struct/DStruct.java
Signal (Interface)
(no doc) [3 implementers]
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/BspSource.java
CloseableScope (Interface)
(no doc) [3 implementers]
bspsrc-app/src/main/java/info/ata4/bspsrc/app/util/log/Log4jUtil.java
IntToFloatFunction (Interface)
(no doc)
bspsrc-common/src/main/java/info/ata4/bspsrc/common/util/IntToFloatFunction.java
LumpReader (Interface)
Defines an interface for reading the content of lump to usable data instances. The interface serves the purpose of e [6 …
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/io/lumpreader/LumpReader.java
ToolTextureDefinition (Interface)
(no doc) [1 implementers]
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/modules/texture/tooltextures/ToolTextureDefinition.java
Listener (Interface)
(no doc) [2 implementers]
bspsrc-app/src/main/java/info/ata4/bspsrc/app/src/gui/models/FilesModel.java
ChunkReader (Interface)
(no doc) [84 implementers]
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/io/DataReaderUtil.java

Core symbols most depended-on inside this repo

put
called by 213
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/VmfWriter.java
get
called by 190
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/util/Winding.java
add
called by 174
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/vector/VectorXf.java
add
called by 111
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/util/Winding.java
stream
called by 100
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/vector/VectorXf.java
size
called by 88
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/util/Winding.java
append
called by 74
bspsrc-app/src/main/java/info/ata4/bspsrc/app/util/log/plugins/DialogAppender.java
position
called by 69
bspsrc-app/src/main/java/info/ata4/bspsrc/app/util/swing/GridBagConstraintsBuilder.java

Shape

Method 1,402
Class 380
Enum 18
Interface 12

Languages

Java100%

Modules by API surface

bspsrc-lib/src/test/java/info/ata4/bspsrc/lib/vector/VectorXfTest.java113 symbols
bspsrc-lib/src/test/java/info/ata4/bspsrc/lib/vector/Vector3fTest.java47 symbols
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/BspFileReader.java42 symbols
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/util/Winding.java38 symbols
bspsrc-lib/src/test/java/info/ata4/bspsrc/lib/vector/Vector2fTest.java37 symbols
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/BspFile.java37 symbols
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/modules/VmfMeta.java37 symbols
bspsrc-lib/src/test/java/info/ata4/bspsrc/lib/vector/Vector4fTest.java33 symbols
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/vector/VectorXd.java27 symbols
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/vector/VectorXf.java26 symbols
bspsrc-lib/src/main/java/info/ata4/bspsrc/lib/entity/Entity.java25 symbols
bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/modules/BspProtection.java22 symbols

For agents

$ claude mcp add bspsrc \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact