Skip to main content

Overview

The BspFileReader class provides high-level access to BSP file data structures. It handles reading and parsing all types of lumps into structured Java objects, with support for different BSP versions and game-specific formats. Package: info.ata4.bspsrc.lib Source: BspFileReader.java:38

Constructors

BspFileReader

public BspFileReader(BspFile bspFile, BspData bspData)
Creates a new BspFileReader with a custom BspData instance.
bspFile
BspFile
required
The loaded BSP file to read from.
bspData
BspData
required
The BspData instance to populate with read data.
Source: BspFileReader.java:46
public BspFileReader(BspFile bspFile)
Creates a new BspFileReader with a new BspData instance.
bspFile
BspFile
required
The loaded BSP file to read from.
Source: BspFileReader.java:57

Public Methods

loadAll

public void loadAll()
Loads all supported lumps from the BSP file. This includes entities, vertices, edges, faces, models, brushes, textures, displacements, static props, and more. Source: BspFileReader.java:68

loadEntities

public void loadEntities()
Loads the entity lump and detects the Source engine application ID using heuristics if unknown. Source: BspFileReader.java:387

loadVertices

public void loadVertices()
Loads the vertex lump containing all map vertices. Source: BspFileReader.java:139

loadEdges

public void loadEdges()
Loads the edge lump. Handles special formats for Vindictus and Strata Source. Source: BspFileReader.java:157

loadFaces

public void loadFaces()
Loads face data, prioritizing HDR faces if available. Handles various face formats based on BSP version and game. Source: BspFileReader.java:199

loadOriginalFaces

public void loadOriginalFaces()
Loads original face data (pre-VBSP processing faces). Source: BspFileReader.java:213

loadModels

public void loadModels()
Loads brush models. Handles special Dark Messiah format. Source: BspFileReader.java:222

loadSurfaceEdges

public void loadSurfaceEdges()
Loads surface edge indices used to define face geometry. Source: BspFileReader.java:239

loadStaticProps

public void loadStaticProps()
Loads static prop data including model names, prop instances, and leaf associations. Source: BspFileReader.java:248

loadCubemaps

public void loadCubemaps()
Loads cubemap sample positions for environment mapping. Source: BspFileReader.java:268

loadPlanes

public void loadPlanes()
Loads plane definitions used by brushes. Source: BspFileReader.java:98

loadBrushes

public void loadBrushes()
Loads brush geometry data. Source: BspFileReader.java:107

loadBrushSides

public void loadBrushSides()
Loads brush side definitions. Handles multiple format variations. Source: BspFileReader.java:116

loadDispInfos

public void loadDispInfos()
Loads displacement surface information. Supports various game-specific formats. Source: BspFileReader.java:277

loadDispVertices

public void loadDispVertices()
Loads displacement vertices defining terrain geometry. Source: BspFileReader.java:314

loadDispTriangleTags

public void loadDispTriangleTags()
Loads displacement triangle tags for advanced surface properties. Source: BspFileReader.java:323

loadDispMultiBlend

public void loadDispMultiBlend()
Loads displacement multi-blend data for advanced texture blending. Source: BspFileReader.java:332

loadTexInfo

public void loadTexInfo()
Loads texture information including UV mapping data. Source: BspFileReader.java:349

loadTexData

public void loadTexData()
Loads texture data and associated texture name strings. Source: BspFileReader.java:366

loadNodes

public void loadNodes()
Loads BSP tree nodes for spatial partitioning. Source: BspFileReader.java:408

loadLeaves

public void loadLeaves()
Loads BSP tree leaf nodes. Handles version-specific formats. Source: BspFileReader.java:427

loadLeafFaces

public void loadLeafFaces()
Loads leaf-to-face mapping indices. Source: BspFileReader.java:451

loadLeafBrushes

public void loadLeafBrushes()
Loads leaf-to-brush mapping indices. Source: BspFileReader.java:467

loadOverlays

public void loadOverlays()
Loads overlay decals with fade distances and system levels. Source: BspFileReader.java:483

loadAreaportals

public void loadAreaportals()
Loads areaportal definitions for visibility optimization. Source: BspFileReader.java:521

loadClipPortalVertices

public void loadClipPortalVertices()
Loads vertices used by clip portals. Source: BspFileReader.java:148

loadOccluders

public void loadOccluders()
Loads occluder geometry for occlusion culling. Source: BspFileReader.java:540

loadFlags

public void loadFlags()
Loads map-level flags. Source: BspFileReader.java:581

loadPrimitives

public void loadPrimitives()
Loads primitive geometry data (used in some game variants). Source: BspFileReader.java:590

loadPrimIndices

public void loadPrimIndices()
Loads primitive index data. Source: BspFileReader.java:607

loadPrimVerts

public void loadPrimVerts()
Loads primitive vertex data. Source: BspFileReader.java:623

getBspFile

public BspFile getBspFile()
Returns the associated BspFile instance. Returns: The BspFile being read from Source: BspFileReader.java:771

getData

public BspData getData()
Returns the BspData instance containing all loaded data structures. Returns: The BspData with loaded lumps Source: BspFileReader.java:775

Usage Example

import info.ata4.bspsrc.lib.BspFile;
import info.ata4.bspsrc.lib.BspFileReader;
import info.ata4.bspsrc.lib.BspData;
import java.nio.file.Path;

// Load BSP file
BspFile bsp = new BspFile();
bsp.load(Path.of("maps/dm_example.bsp"));

// Create reader
BspFileReader reader = new BspFileReader(bsp);

// Load all data
reader.loadAll();

// Access loaded data
BspData data = reader.getData();

// Work with entities
System.out.println("Entities: " + data.entities.size());
data.entities.forEach(entity -> {
    System.out.println("Class: " + entity.getClassName());
});

// Work with static props
System.out.println("Static props: " + data.staticProps.size());

// Work with brushes
System.out.println("Brushes: " + data.brushes.size());

// Work with displacements
System.out.println("Displacements: " + data.dispinfos.size());

// Load specific lumps on demand
BspFileReader selectiveReader = new BspFileReader(bsp);
selectiveReader.loadEntities();
selectiveReader.loadStaticProps();
selectiveReader.loadTexInfo();
selectiveReader.loadTexData();

See Also

Build docs developers (and LLMs) love