Creative Costs Numismatics
Required Create!
Puts a price on every item in the pack, derived from the crafting graph, and charges it when a player takes one out of the creative menu. The creative menu is a shop, not an income source: it only takes money out of the economy. Earning is Delivery Required's job.
A 200-mod pack has tens of thousands of items and nobody will price them by hand. But nearly every item is made of other items, and a few dozen raw materials are worth pricing by hand. So the prices come out of a solver over the recipe graph.
| Mod | id |version | |
|----- |---- |--------|-|
| Selective Creative Inventory | `selective_creative_inventory` | 1.0.0 | **required** — owns the screen |
| Create: Numismatics | `numismatics` | 1.0.20 | **required** — the currency |
| Create | `create` | 6.0.10 | **required** — recipe graph for pricing |
| Create Aeronautics: Delivery Required | `createdeliveryrequired` | 1.0.2 | optional — price anchors and all player income |
Controls
Press E. There is no separate GUI and no keybind of this mod's own. Selective Creative Inventory already redirects the inventory key to the creative menu for players it has enabled (/sci enable <player>), and this mod changes what clicking in that menu does.
| Gesture | Effect |
|---|---|
| Left click an item | Buy 1 |
| Right click an item | Buy shop.bulkBuyCount (default 8) |
| Ctrl + left click | Buy a full stack |
| Shift + left click | Buy an infinite source (blocks only) |
| Middle click | Print that item's market data to chat |
| Click any shop slot, or the bin, while carrying a stack | Destroy it. No refund. |
Tooltips carry the buy price and supply with a scarcity indicator (▲ +42% / ▼ -18% / ■ par); inside the shop they also show the control hints and your balance.
Commands
| Command | Permission | Effect |
|---|---|---|
/ccn balance |
anyone | Your balance |
/ccn price |
anyone | Market data for the held item |
/ccn market |
anyone | Total market value, shelf level, traded lines |
/ccn sync |
anyone | Force a full resync (debugging) |
/ccn supply set <value> |
op (2) | Set the held item's supply |
/ccn supply reset |
op (2) | Reset every supply to baseline |
/ccn reload |
op (2) | Re-solve prices and resync everyone |
/ccn export |
op (2) | Dump the whole resolved table to ccn-prices-export.json |
/ccn contract add|remove |
op (2) | List the held item for delivery contracts |
/ccn market add|remove |
op (2) | List the held item for bulk Market purchase |
There is no sell command, by design.
/ccn export is the tuning workflow: dump, read, copy the entries you disagree with into your own datapack's items block, /ccn reload. pricing.exportOnSolve does the same automatically on every solve.
New players
The pack should work without an operator setting up each player by hand, so on first join PlayerOnboarding does two things.
Creative inventory access. Selective Creative Inventory gates the menu behind a per-player attachment normally set with /sci enable. Its CREATIVE_INVENTORY attachment is public, so the flag is set directly — only the field lookup is reflective, the attachment type itself is a NeoForge class. Without this every new player sees a plain survival inventory and no shop.
Starting capital. 4096 spurs — one Sun — into their Numismatics bank account, so they can trade at all. Only for a player with nothing anywhere: purse, bank and virtual balance all zero. A brand new player has no bank account yet, so NumismaticsBank.depositToNewAccount opens one via getOrCreateAccount(UUID, Type.PLAYER); if that is unavailable the grant is paid in coins instead rather than silently lost.
Both are claimed once per player and recorded in the world save, which matters more than it looks. The capital test is "are you broke", so without the record it would pay out again every time someone spent down to zero — an income source that bypasses contracts entirely. And re-granting creative access on every login would quietly override an operator's deliberate /sci disable.
The server is authoritative. The client sends "I clicked this item in this mode"; the server decides the item, the count, the price, whether the player may buy it at all, whether they can afford it, and what the market does next. ClientMarket exists only so tooltips can be drawn without a round trip.
Known Limits
- Manufactured goods only come back through contracts. Anything not on the
raw_materialslist that no contract ever asks for is on a one-way ratchet tomarket.maxMultiplier. That is the intent, but it means the raw-material list is the most important thing to get right for a pack. - P2P trades are not tracked in either direction.
- Other mods in the pack are income sources this design does not know about. The economy assumes earning happens through delivery contracts, but
bountiful,numismatic_bounties,jackpot,stockmarketandtrading_floorall pay out independently, and villager trading (pluseasy_npcandvillageroverhaul) both mints currency and supplies items without touching the market. None of that breaks anything mechanically — it just means the loop leaks, and the leak is worth a decision rather than a surprise. - AlmostUnified rewrites recipes and tags before the solver runs, so derived prices follow the unified recipes correctly. Items it unifies away still exist in the registry and still get priced, which is harmless but adds noise to
/ccn export. - CraftTweaker and KubeJS recipes are included, since solving happens on
ServerStartedEventand after every reload — i.e. once scripts have already rewritten the recipe manager. - Infinite sources are only stopped from shrinking, not from being used as ingredients.
ItemStack#consumeis the block-placement path; a recipe that callsshrinkdirectly would still eat one. - Component-bearing stacks are priced by item id. Buying an enchanted book charges the base item's price, and the client's components are accepted as sent.
- Dispensers and other non-player placements of an infinite source are not billed.
- Drag-distribute is disabled inside shop tabs.
Planned updates ahead. this is very new! Thanks Fable 5