# `traderx_check.py` – validate and fix an existing config Works directly on a TraderX profile folder; independent of the build tool. Useful for configs made with the web editor, by hand, or for a quick health check before start. ```bash python3 traderx_check.py ~/serverprofile/TraderX # report only python3 traderx_check.py ~/serverprofile/TraderX --decode # + decoded bitfields per product python3 traderx_check.py ~/serverprofile/TraderX --fix # apply safe fixes (backup first) python3 traderx_check.py ~/serverprofile/TraderX --fix --fix-settings ``` The path may be the profiles dir, the `TraderX` dir or `TraderXConfig`. ## What it reports **Errors** (the mod will skip or misread the file): - file names not matching `prod__NNN.json` / `cat__NNN.json` - invalid JSON (line/column), or top-level value not an object - wrong field types that can't be coerced; missing `className` - `buyPrice`/`sellPrice`/`maxStock` below `-1`; `coefficient ≤ 0` - attachments / variants / `productIds` pointing at products that don't exist - `licensesRequired` entries that aren't a `licenseId` in `TraderXGeneralSettings.json` - trader `categoriesId` pointing at missing categories; duplicate `npcId` **Warnings:** - `coefficient ≠ 1` with unlimited stock (no effect); very low coefficients - sell > buy; both prices `-1` - unknown mode bits in `tradeQuantity`; out-of-range `stockSettings` - products not listed in any category (fine for attachments) - empty categories; traders with no categories - a `Compiled/` folder shadowing `Products/` and `Categories/` Repeated messages are grouped (`(414x) coefficient 0.9 has no effect …`); use `--no-group` to list them all and `--ignore TEXT` (repeatable) to mute known-acceptable ones. ## What `--fix` changes After copying `Products/` and `Categories/` to `Backup_traderx_check_/`: - renames invalid file names (sanitise, append `_001`, bump on collision) and rewrites every reference to the old id in categories, attachments, variants and the matching `TraderXDatabase/Stock/.json` - adds missing fields with the mod's defaults; coerces `"5"` → `5`, `25.0` → `25`; drops unknown keys (e.g. a stray `productId` inside a legacy product file) - removes dangling and duplicate references; converts license *names* to license *ids* - `--fix-settings`: also rewrites renamed category ids in `traders[].categoriesId` (writes `TraderXGeneralSettings.json.bak` first) Never changed automatically: invalid JSON, empty class names, prices, stock, coefficients, missing licenses. Run with the server stopped – it renames stock files. ## Exit code `0` when no errors remain, `1` otherwise – usable in start scripts (see `scripts/prestart-check.sh`).