A visual hotfix mod editor for Borderlands 3, inspired by OpenBLCMM (Borderlands Community Mod Manager).
Made by Ty-Gone.
OpenBL3CMM lets you create, edit, and manage BL3 hotfix mods with a visual interface — no more hand-editing giant text files. It's designed to work with OpenHotfixLoader (OHL) and B3HM.
Think of it as BLCMM, but for Borderlands 3.
Download OpenBL3CMM_Setup.exe from the releases page and run the installer.
The Object Explorer lets you browse all BL3 game objects. To use it:
- Download
bl3data.sqlite3from the repo: bl3data.sqlite3 - Place it in:
%LOCALAPPDATA%\Programs\OpenBL3CMM\datapacks\ - Open the Object Explorer (Ctrl+E) — it auto-detects the datapack
Tip: The datapacks folder is created automatically by the installer. You can also load datapacks manually via the "Load Datapack..." button.
- Use File → New to create a blank mod, or download the Template Mod as a starting point
- Add categories and entries using the toolbar or keyboard shortcuts
- Save as
.bl3hotfixor.blmod - Place your mod file where OHL/B3HM can find it
| File | Description |
|---|---|
| OpenBL3CMM_Setup.exe | Windows installer (from Releases) |
| Template_Mod.blmod | Template mod file to get started |
| bl3data.sqlite3 | BL3 Object Explorer datapack — place in %LOCALAPPDATA%\Programs\OpenBL3CMM\datapacks\ |
- Visual category tree with checkboxes to enable/disable individual entries or entire categories
- Full command display — tree shows the complete simple command (
set /Game/Path/Object Property Value) - Per-command color coding —
set= blue,edit= green,clone= gold,delete= pink, etc. (customizable) - Comment display — comments show as bright yellow labels above their entry
- Simple command syntax — write
set,edit,merge,early_setinstead of rawSparkPatchEntrylines - Three entry modes — Raw Text, Simple Command (guided), or Spark Format (individual fields)
- BLCMM-style auto-format — struct values like
(Key=Val,...)display with proper indentation - Bracket matching — highlights matching
()pairs in the editor - Syntax highlighting — commands, object paths, and properties colored in real-time
- Validation on save — warns about potential problems before saving
- Drag and drop reordering of entries and categories
- Copy / Cut / Paste entries and categories
- Search across all entries
- Independent windows — edit multiple entries simultaneously without overlap
- Auto-load datapack — drop
data.sqlin the datapacks folder and it's detected automatically - Built-in data browser — browse all BL3 game objects (Tools → Object Explorer, Ctrl+E)
- Tabbed properties — open multiple objects in separate tabs, closeable and moveable
- Clickable links — object paths in JSON become clickable, navigate with left-click or middle-click to open in new tab
- Save/bookmark objects — each tab has a clipboard of saved object paths
- Back/Forward navigation — full history with ◀ ▶ buttons, Alt+Left/Right, Mouse 4/5
- Search in properties — Ctrl+F with regex, match case, wrap around (per active tab)
- Zoom — Ctrl+Wheel, Ctrl+=/-, Ctrl+0 to reset
- Preferences menu — Keyboard Shortcuts editor accessible from menu bar
- References — browse references FROM and TO any object, double-click to navigate
- Search by path, class, or properties with "Search Properties" checkbox
- Datapack support — loads SQLite datapacks (apocalyptech's bl3refs format, Grimm's JSON data, ZIP, 7z)
- Keyboard Shortcuts — press-to-edit capture supporting keys, mouse buttons, and scroll wheel
- Command Color Coding — customize colors per command type with color picker
- Theme selector — 6 themes: Midnight, Obsidian, BL3 Orange, Soft Dark, Soft Purple, Catppuccin Mocha
- Font & Size settings — change UI font, monospace font, and size
- Detail Panel toggle — show/hide the right-side detail panel
- Built-in 6-page walkthrough for new users
- Shows on first launch, accessible anytime via Help → Tutorial
- Transparent handling — Type 2 DataTable hotfixes display as clean
set TABLE ROW VALUEwithout showing the ugly column hash - Column auto-recovery — the column name is preserved internally and recovered automatically on save
.bl3hotfix— standard OHL/B3HM text format.blmod— YAML-based format (requires PyYAML)- BLIMP tags — reads and writes
@title,@author,@version,@descriptionmetadata - Disabled entries — saved as
#SparkPatchEntry,...(game skips#lines) - Import / Export — import mods as categories, export individual categories or enabled-only
| Command | Description | Spark Type |
|---|---|---|
set |
Set a property | SparkPatchEntry |
edit |
Level-specific set (MatchAll) | SparkLevelPatchEntry |
merge |
Character-loaded patch | SparkCharacterLoadedEntry |
early_set |
Early level patch | SparkEarlyLevelPatchEntry |
news |
Inject news item | InjectNewsItem |
set_cmp |
Compare-and-set | SparkPatchEntry |
set_array |
Set entire array | SparkPatchEntry |
set_struct |
Set struct field | SparkPatchEntry |
add |
Add to array | SparkPatchEntry |
remove |
Remove from array | SparkPatchEntry |
clone |
Clone an object | SparkPatchEntry |
delete |
Delete an object | SparkPatchEntry |
create |
Create a new object | SparkPatchEntry |
rename |
Rename an object | SparkPatchEntry |
exec |
Include another mod file | exec |
set_mesh |
Type 6 mesh placement | SparkLevelPatchEntry |
| Shortcut | Action |
|---|---|
| Ctrl+N | New mod |
| Ctrl+O | Open file |
| Ctrl+S | Save |
| Ctrl+Shift+S | Save As |
| Ctrl+E | Object Explorer |
| Insert | Edit selected entry / Add new entry |
| Ctrl+H | Add category |
| Ctrl+B / Ctrl+D | Enable / Disable selected |
| Ctrl+C / X / V | Copy / Cut / Paste |
| Delete | Delete selected |
| Ctrl+= / Ctrl+- | Zoom In / Out |
| Ctrl+0 | Reset zoom |
All shortcuts are customizable via Preferences → Keyboard Shortcuts.
| Shortcut | Action |
|---|---|
| Ctrl+F | Search in properties |
| Alt+Left / Right | Back / Forward |
| Mouse 4 / 5 | Back / Forward |
| Ctrl+Wheel | Zoom |
Download OpenBL3CMM_Setup.exe from the releases page and run it. The installer creates:
%LOCALAPPDATA%\Programs\OpenBL3CMM\
├── backups\ — auto-backups before each save
├── datapacks\ — place data.sql here for Object Explorer
└── mods\ — default mod directory
Requires Python 3.10+.
pip install PySide6
pip install pyyaml # optional, for .blmod support
python main.pyIf you want to generate your own datapack instead of using the provided data.sql:
# From Grimm's extracted JSON + bl3refs
python generate_datapack.py --from-json "C:\path\to\extracted\" --merge-refs bl3refs.sqlite3 -o bl3data.sqlite3
# From 7z archive
python generate_datapack.py --from-7z "Final version.7z" --merge-refs bl3refs.sqlite3 -o bl3data.sqlite3Get bl3refs.sqlite3 from apocalyptech's BL3 Object Refs.
main.py — GUI, dialogs, tree, themes, preferences
models.py — Data model (ModFile, Category, HotfixEntry)
parser.py — File parser (.bl3hotfix, .blmod)
exporter.py — File exporter
commands.py — Simple command ↔ Spark format conversion
blimp.py — BLIMP metadata tags
blmod.py — .blmod YAML format
object_explorer.py — Object Explorer window
hotfix_highlighter.py — Syntax highlighting + validation
generate_datapack.py — SQLite datapack generator
openbl3cmm.ico — App icon
OpenBL3CMM.spec — PyInstaller spec
installer.iss — Inno Setup installer script
build.bat — Windows build script
CHANGELOG.md — Version history
Template_Mod.blmod — Template mod file
- BL3 Hotfix Modding Guide
- BL3 Hotfix Format
- BL3 Item and Weapon Parts
- Make Every Gun an Alien Barrel
- BL3 Mod Authors Guide
- Community Mods
- OpenHotfixLoader
- Ty-Gone — OpenBL3CMM development
- apple1417 — OpenHotfixLoader, BLIMP spec, .blmod format
- LightChaosman — Original BLCMM (inspiration)
- Apocalyptech — BL3 modding resources, Object Refs, OpenBLCMM
- BLCM Community — Borderlands modding community
OpenBL3CMM is licensed under the GNU General Public License v3. A copy can be found at License.txt.