https://github.com/bitsfdb/rl-item-dumper
BakkesMod plugin that dumps all Rocket League items with thumbnails to items.json
https://github.com/bitsfdb/rl-item-dumper
Last synced: 15 days ago
JSON representation
BakkesMod plugin that dumps all Rocket League items with thumbnails to items.json
- Host: GitHub
- URL: https://github.com/bitsfdb/rl-item-dumper
- Owner: bitsfdb
- Created: 2026-05-27T14:36:56.000Z (16 days ago)
- Default Branch: main
- Last Pushed: 2026-05-27T15:00:53.000Z (16 days ago)
- Last Synced: 2026-05-27T16:26:14.204Z (16 days ago)
- Language: C++
- Size: 250 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rl-item-dumper
A [BakkesMod](https://bakkesmod.com/) plugin for Rocket League that extracts every in-game item — labels, slot types, quality, and thumbnails — and writes them to `items.json` alongside PNG thumbnail files.
## Output
```
ItemDumper/
├── items.json # full catalog with base64-embedded thumbnails
└── thumbnails/
├── T_Body_Octane.png
├── T_Decal_Shisa.png
└── ...
```
Each entry in `items.json`:
```json
{
"id": 23,
"label": "Octane",
"long_label": "Octane",
"asset_package": "Body_Octane",
"asset_path": "...",
"slot": "Body",
"slot_index": 0,
"quality": 0,
"quality_label": "Common",
"is_paintable": false,
"thumbnail_package": "Thumbnails_Body",
"thumbnail_asset": "T_Body_Octane",
"thumbnail_path": "thumbnails/T_Body_Octane.png",
"thumbnail_base64": "data:image/png;base64,..."
}
```
## Setup
1. **AES keys** — copy `keys.txt` from [RLUPKTools](https://github.com/CrunchyRL/RLUPKTools) into the output folder (default `%APPDATA%/bakkesmod/bakkesmod/data/ItemDumper/`). Without keys, item metadata is still dumped but thumbnails are skipped.
2. **Install** — copy `ItemDumper.dll` to `%APPDATA%/bakkesmod/bakkesmod/plugins/` (the build does this automatically on post-build).
3. **Load** — open BakkesMod → Plugins → Plugin Manager → enable **Item Dumper**.
## Usage
Open the BakkesMod console (`F6`) and run:
```
dump_items
```
To use a custom output path:
```
itemdumper_output_path "C:/my/output/dir"
dump_items
```
## Building
Prerequisites: Visual Studio 2022, CMake ≥ 3.20, BakkesMod SDK installed (`%APPDATA%/bakkesmod/bakkesmod/bakkesmodsdk`).
```powershell
cd plugin
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
```
The DLL is automatically copied to the BakkesMod plugins folder on a successful build.
## How it works
1. `GetItemsWrapper().GetAllProducts()` — live item catalog from the running game
2. Windows registry — auto-detects the Rocket League install path (Steam or Epic)
3. `keys.txt` — AES-256-ECB keys for UPK decryption (game-specific, not included)
4. UPK pipeline (pure C++, no Python):
- AES-ECB decrypt via Windows BCrypt
- zlib chunk decompress via miniz
- UE3 name/export table parse
- `UTexture2D` bulk mip data extract
- DXT1/DXT5 block decode → RGBA
- PNG encode via `stb_image_write`
5. `nlohmann/json` — serialize to `items.json`
## Third-party
| Library | License |
|---------|---------|
| [miniz](https://github.com/richgel999/miniz) | MIT |
| [stb_image_write](https://github.com/nothings/stb) | Public domain |
| [nlohmann/json](https://github.com/nlohmann/json) | MIT |