Add custom DBC rows to WoW without replacing the original .dbc files.
You ship small add-on files named like CreatureDisplayInfo.dbc1-yourmod. The game loads the normal table first, then layers your changes on top. Same idea on the client (WXL) and on an AzerothCore server (optional module in this repo).
| Folder | What it is |
|---|---|
Root (src/, wxl.json) |
Client extension (install with wxl-core) |
| server-files/ | Server module + small AzerothCore patch |
If the server needs your new rows too, use the same files and the same IDs on both sides.
Maybe not. Many mod changes are client-only.
Install the extension and put your add-on DBC files in the client patch. No server work.
Good for things players see or hear but the server does not look up in DBC:
- Custom creature models (display info) for an NPC that already exists on the server
- Spell animations, icons, visuals (the spell ID already works server-side)
- Item icons and models in bags (the item ID already exists)
- Sounds, cinematics
Example: NPC 90001 is already in your database. You add a new look on the client only. Players see the new model; the server keeps running as before.
You need the server module when you add or change data the server actually reads from DBC:
- New spells (not just how they look)
- New items with stats the server checks
- New creatures (the template itself, not just the model)
- Achievements, zones, maps the server validates
Example: You invent spell ID 81234. The client needs it to show the spell. Without the server module, worldserver will not know that spell and things break.
What to install on the server: see server-files/README.md (one-time core patch, mod-wxl-dbc, copy files to data/dbc-continuations/, rebuild).
Quick check: Is this only cosmetics for something that already exists? Client only. Did you invent a new ID the server must understand? Client + server.
Put files under DBFilesClient/ like any other patch.
CreatureModelData.dbc ← vanilla table (unchanged)
CreatureModelData.dbc1-battlemon ← your add-on rows
CreatureDisplayInfo.dbc3-tmog ← tier 3, another project
The part after .dbc is a tier (1–9) and a project name (letters, numbers, -, _).
If two add-ons touch the same row ID, later tiers win, then manifest order, then project name A–Z. Backup files (.bak, .old, etc.) are ignored.
Your add-on files live next to the base .dbc, not inside it. Replacing Foo.dbc in patch-z does not remove someone else's Foo.dbc1-othermod unless you ship a file with that exact name too.
WoW reads everything from Data/. Higher patch letters win when two files claim the same path (patch-z beats patch-enUS).
You can lay out that data two ways:
patch-z.mpq is a folder, not a zip-like archive:
Data/
patch-z.mpq/
DBFilesClient/
CreatureDisplayInfo.dbc1-battlemon
CreatureModelData.dbc1-battlemon
Drop files in, relaunch, test. The extension finds add-on DBC files automatically. You do not need a manifest unless you care about exact load order between mods.
patch-z.mpq is a single archive file players drop in Data/:
patch-z.mpq (archive)
wxl-dbc.manifest
DBFilesClient/
CreatureDisplayInfo.dbc1-battlemon
...
The extension cannot peek inside a closed archive to discover file names. For a real MPQ you must include wxl-dbc.manifest (see below). Models and textures go in the same MPQ with the usual paths.
A plain text file: one add-on DBC path per line. Lines starting with # are comments.
When you need it
| Patch type | Manifest |
|---|---|
Folder (Data/patch-z.mpq/) |
Optional — files are found automatically |
| Real MPQ archive | Required — lists every *.dbc1-* … *.dbc9-* file |
Where to put it (any of these; earlier locations win for ordering):
wxl-dbc.manifestData/wxl-dbc.manifestData/<your-patch-folder>/wxl-dbc.manifest
Example (copy examples/wxl-dbc.manifest into your MPQ or patch folder):
# My mod — add-on DBC paths only (not base Something.dbc)
# Data/ prefix is optional
DBFilesClient/CreatureModelData.dbc1-battlemon
DBFilesClient/CreatureDisplayInfo.dbc1-battlemon
DBFilesClient/SpellVisual.dbc1-battlemon
# Tier 2 loads after tier 1 for the same table
DBFilesClient/SpellVisual.dbc2-battlemon-hotfix
Lines are merged in list order within the same tier. Across mods at the same tier, manifest order beats project name A–Z.
Server: AzerothCore does not use MPQs. Copy the same add-on DBC files into data/dbc-continuations/. Folder vs MPQ is a client-only question.
Release (MPQ): Build one patch MPQ with the manifest, your *.dbc1-yourproject files, and assets. Users put it in Data/. No CSV tools on their end.
Development (folder): Keep a Data/patch-z.mpq/ folder in your client tree. Edit files, relaunch, repeat. Pack to MPQ when you are ready to ship.
Pick ID ranges per project so two mods do not reuse the same row IDs.
This repo builds as part of wxl-core, not by itself.
- Put it at
wxl-core/extensions/wxl-extended-dbc/ - Build wxl-core (Release)
- Copy
wxl-extended-dbc.dllto<WoW>/Extensions/wxl-extended-dbc/
Cloned this repo alone? Copy or symlink it into your wxl-core tree first.
Copy the module into modules/mod-wxl-dbc/, apply the small core patch, add your continuation files under data/dbc-continuations/, rebuild worldserver.