-
Notifications
You must be signed in to change notification settings - Fork 0
Item Catalog
One bundled data file gives the UI friendly names and icons for the game's raw type ids, and says which items can be used in logistics. It is app-only — never read from or written to a save file — and an id PCEdit does not know still loads, still edits, and still moves between inventories.
| File | Contents | Used by |
|---|---|---|
PCEdit.App.Core/Data/ItemCatalog.json |
628 items in 17 categories | Inventories — item name + category icon · Logistics Editor — the demand / supply pick-list |
It is an embedded resource read through IItemCatalog. ILogisticsGroupCatalog is a projection of
the same data, not a separate file: the logistics pick-list is every item flagged canDemand /
canSupply that is not deprecated — 212 groups today.
Note
Until v1.4.0 the logistics groups lived in a separate LogisticsGroups.json, generated by
gen_logistics_groups.py. Both are gone; the flags live on the catalog items instead.
- Keyed by
WorldObject.gId. - An unknown id renders as the raw id with the
fallbackCategoryicon. Nothing breaks. - An item may carry its own
"icon", which overrides the category icon — dropitem_<name>.pngintoPCEdit.Desktop/Assets/Icons/and add the field. No code change. -
canDemand/canSupply— whether the item appears in the logistics pick-lists. -
deprecated/deprecatedIn— an item the game has retired (e.g.Phytoplankton2/3in 2.102). It still resolves, so existing saves keep their names, but it is left out of the logistics pick-lists. -
addedIn— the game version that introduced the item, where the developer changelog says so. Most base resources predate the tracked notes and staynull. The app loads these version fields but does not display them yet.
The JSON is generated. Edit the tables in the scripts, then re-run them from the repo root:
python tools/item-catalog/gen_catalog.py # -> PCEdit.App.Core/Data/ItemCatalog.json
python tools/item-catalog/gen_icons.py # -> PCEdit.Desktop/Assets/Icons/cat_*.svggen_catalog.py holds four tables:
| Table | Holds |
|---|---|
ITEMS |
gId → (displayName, category) |
CATEGORIES |
category → displayName, icon |
LOGISTICS_IDS |
the items usable in logistics (sets both canDemand and canSupply) |
VERSION_INFO |
filled by added("<version>", …) / deprecated("<version>", …) calls, one block per game release, sourced from the developer version history
|
The generator asserts that every item's category exists and that every LOGISTICS_IDS /
VERSION_INFO id is in ITEMS; ItemCatalogTests re-checks the category rule at build time.
Important
Never hand-edit the JSON. Since v1.4.1 CI re-runs gen_catalog.py and fails the build if
the committed ItemCatalog.json differs from what the generator produces — so a hand edit, or a
generator edit that was never re-run, is caught.
After a new game version, or a save from a planet the sample saves never visited:
python tools/item-catalog/report_missing.py <save> [<save> ...]It lists every WorldObject.gId and unlockedGroups entry absent from ItemCatalog.json, and every
demandGrps / supplyGrps id that is missing the matching logistics flag, with occurrence
counts — so the ids worth naming first come out on top. Curate the output into the generator
tables and re-run.
History: the catalog was seeded from a single Prime save (278 items), grew to 466 for the 2.102 release once Humble / Toxicity / Aqualis / Selenea saves were mined, and reached 628 in v1.4.0, when every item was matched to its real in-game name and backfilled from the developer changelog. Every item id in the repository's sample saves is now named. See New Game Version.
gen_icons.py emits one 64×64 rounded-tile SVG per category — coloured background, white pictogram
— so the icons read on both light and dark inventory cards. The SVGs are the source; the .png
shipped beside each one is rasterised out of band.
A missing item name is one of the easiest useful contributions:
-
Run
report_missing.pyagainst your save, or note the raw type id from the Inventories page (hover an item to see it). -
Add an entry to the
ITEMStable ingen_catalog.py, matching the game's own wording:("Uranim", ("Uranium", "ore")), # the game's own spelling of the id
If the item can be used in logistics, add its id to
LOGISTICS_IDS; if the version history says which release added it, add it to that release'sadded(...)block. -
Re-run the generator, run
dotnet test PCEdit.App.Core.Tests, and commit both the script and the regenerated JSON.
See Contributing.
PCEdit · unofficial fan tool for The Planet Crafter · GPL-3.0-or-later · back up your saves (disclaimer)
Using PCEdit
- Installation
- Save File Locations
- Quick Start
- Worlds & Planets
- Overview & Terraforming
- Inventories
- Logistics Editor
- Terra Tokens
- Teleport
- Languages & Settings
- FAQ & Troubleshooting
Development
- Architecture
- Save File Format
- Save File Library
- App Core
- Desktop UI
- Localization
- Item Catalog
- Testing
Shipping
{ "fallbackCategory": "misc", "categories": { "ore": { "displayName": "Ore & Minerals", "icon": "cat_ore.png" } }, "items": { "Iron": { "displayName": "Iron", "category": "ore", "canDemand": true, "canSupply": true, "deprecated": false, "addedIn": null, "deprecatedIn": null } } }