Simulated ChestShop: Difference between revisions
More actions
Initial content |
Note custom-built plugin + link to engine pages |
||
| Line 1: | Line 1: | ||
The '''Simulated ChestShop''' | The '''Simulated ChestShop''' is a custom-built automated market activity engine developed specifically for Prosperity SMP. Unlike off-the-shelf plugins, it was designed from scratch to integrate with the server's [[Consumer Price Index|CPI tracking]], [[Monetary policy engine|monetary policy engine]], and [[Economy|economic dashboard]]. It creates background buying activity at player-owned [[ChestShop]] signs, ensuring shops see traffic even during low-population hours. | ||
== Purpose == | == Purpose == | ||
At low player counts, player shops can sit idle for hours | At low player counts, player shops can sit idle for hours. This discourages players from setting up shops, which weakens the [[Economy|player-driven economy]]. The Simulated ChestShop solves this by having a server-managed bank account (CentralBank) purchase items from player shops at fair market prices. | ||
The system | The system '''only buys''' — it does not sell items to players. It is a pure liquidity injection from the CentralBank reserve into player hands. | ||
== Custom development == | |||
The Simulated ChestShop was purpose-built as a Skript plugin (sim-chestshop.sk) rather than using an existing solution. This allows deep integration with the server's other custom systems: | |||
* '''[[Consumer Price Index|CPI]] awareness''' — the system reads real market prices to determine fair buy values, and its own transactions are excluded from CPI calculations to prevent feedback loops. | |||
* '''[[Monetary policy engine]] integration''' — every bank-to-player payout is classified as a TRANSFER_TO_PUBLIC event, feeding the engine's source-flow ratio analysis. | |||
* '''Demand governor''' — an adaptive controller that adjusts buying intensity based on time of day, player count, real buyer activity, and bank health. The system backs off when real buyers are active and fills in when the market is quiet. | |||
* '''Per-shop persona system''' — transactions use randomized buyer names in logs for natural appearance. | |||
== How it works == | == How it works == | ||
# The system maintains a shopping list of common items | # The system maintains a shopping list of approximately 130 common items with internal maximum buy prices. | ||
# Every few minutes, it scans active player [[ChestShop]] signs for eligible items. | # Every few minutes, it scans active player [[ChestShop]] signs for eligible items. | ||
# If a shop | # If a shop sells an item on the list at or below the max price, the system may purchase. | ||
# The shop owner receives payment to their balance, | # The shop owner receives payment to their balance, identical to a normal sale. | ||
# | # Purchased items are removed from the chest (the bank does not stockpile). | ||
From the shop owner's perspective, the transaction looks identical to a real player purchase | From the shop owner's perspective, the transaction looks identical to a real player purchase. | ||
== What the system buys == | == What the system buys == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Category !! | ! Category !! Examples | ||
|- | |- | ||
| Mining || Cobblestone, stone, deepslate, iron ingot, gold ingot, diamond, coal, redstone, lapis | | Mining || Cobblestone, stone, deepslate, iron ingot, gold ingot, diamond, coal, redstone, lapis, copper | ||
|- | |- | ||
| Wood || Oak log, spruce log, birch log, planks | | Wood || Oak log, spruce log, birch log, planks | ||
| Line 31: | Line 37: | ||
|- | |- | ||
| Building || Glass, bricks, sand, gravel | | Building || Glass, bricks, sand, gravel | ||
|- | |||
| Mob drops || String, gunpowder, bones, leather, feathers | |||
|- | |||
| Nether/End || Quartz, glowstone, chorus fruit, blaze rod | |||
|} | |} | ||
=== Items the system will NOT buy === | |||
Beacons, totems of undying, ender pearls, shulker boxes, elytra, mob spawners, and other high-value or exploit-prone items. | |||
== Demand | == Demand controls == | ||
{| class="wikitable" | |||
|- | |||
! Control !! Purpose | |||
|- | |||
| Daily spending cap || Bank stops buying after a server-wide daily limit | |||
|- | |||
| Per-owner cap || No single shop owner receives more than a set share of the daily budget | |||
|- | |||
| Per-shop cooldown || Waits between purchases from the same shop | |||
|- | |||
| Intensity profiles || Activity scales with server population and time of day | |||
|- | |||
| Bank floor || Stops all activity if the CentralBank balance drops below a safety threshold | |||
|} | |||
== Economy integration == | |||
The system is tightly integrated with the server's custom economic infrastructure: | |||
* Transactions are flagged <code>simulated: true</code> in the transaction log. | |||
* The [[Consumer Price Index|CPI]] '''excludes''' simulated transactions — it reflects real player prices only. | |||
* The [[Monetary policy engine]] classifies payouts as transfers from reserve, not new money creation. | |||
* | * A 7-day lagged CPI snapshot prevents the system from chasing its own price signal. | ||
* The [[ | |||
* The [[ | |||
== Visibility == | == Visibility == | ||
The system is intentionally invisible to players: | The system is intentionally invisible to players: | ||
* No command reveals bank buy prices or the shopping list. | |||
* No | * The [[Economy|/market command]] shows real player data only. | ||
* Shop owners cannot distinguish simulated purchases from real ones. | |||
* The [[Economy|/market command]] shows real player | |||
* Shop owners | |||
== Admin commands == | == Admin commands == | ||
| Line 74: | Line 81: | ||
! Command !! Description | ! Command !! Description | ||
|- | |- | ||
| <code>/simshop status</code> || | | <code>/simshop status</code> || Bank balance, daily spend, pause state | ||
|- | |- | ||
| <code>/simshop pause</code> || | | <code>/simshop pause</code> || Pause all activity | ||
|- | |- | ||
| <code>/simshop resume</code> || Resume activity | | <code>/simshop resume</code> || Resume activity | ||
|- | |- | ||
| <code>/simshop refill <amount></code> || Add funds to | | <code>/simshop refill <amount></code> || Add funds to CentralBank | ||
|} | |} | ||
These | These require staff permissions. | ||
== See also == | == See also == | ||
* [[Economy]] — how the | * [[Consumer Price Index]] — the price index (excludes simulated trades) | ||
* [[Monetary policy engine]] — the inflation management system | |||
* [[Economy]] — how money flows through the server | |||
* [[ChestShop]] — how to create player shops | * [[ChestShop]] — how to create player shops | ||
* [[Admin shop]] — the server-run shop | * [[Admin shop]] — the separate server-run shop | ||
* [[Trading]] — trading methods and price discovery | * [[Trading]] — trading methods and price discovery | ||
[[Category:Plugins]] | [[Category:Plugins]] | ||
[[Category:Systems]] | |||
Revision as of 15:19, 27 May 2026
The Simulated ChestShop is a custom-built automated market activity engine developed specifically for Prosperity SMP. Unlike off-the-shelf plugins, it was designed from scratch to integrate with the server's CPI tracking, monetary policy engine, and economic dashboard. It creates background buying activity at player-owned ChestShop signs, ensuring shops see traffic even during low-population hours.
Purpose
At low player counts, player shops can sit idle for hours. This discourages players from setting up shops, which weakens the player-driven economy. The Simulated ChestShop solves this by having a server-managed bank account (CentralBank) purchase items from player shops at fair market prices.
The system only buys — it does not sell items to players. It is a pure liquidity injection from the CentralBank reserve into player hands.
Custom development
The Simulated ChestShop was purpose-built as a Skript plugin (sim-chestshop.sk) rather than using an existing solution. This allows deep integration with the server's other custom systems:
- CPI awareness — the system reads real market prices to determine fair buy values, and its own transactions are excluded from CPI calculations to prevent feedback loops.
- Monetary policy engine integration — every bank-to-player payout is classified as a TRANSFER_TO_PUBLIC event, feeding the engine's source-flow ratio analysis.
- Demand governor — an adaptive controller that adjusts buying intensity based on time of day, player count, real buyer activity, and bank health. The system backs off when real buyers are active and fills in when the market is quiet.
- Per-shop persona system — transactions use randomized buyer names in logs for natural appearance.
How it works
- The system maintains a shopping list of approximately 130 common items with internal maximum buy prices.
- Every few minutes, it scans active player ChestShop signs for eligible items.
- If a shop sells an item on the list at or below the max price, the system may purchase.
- The shop owner receives payment to their balance, identical to a normal sale.
- Purchased items are removed from the chest (the bank does not stockpile).
From the shop owner's perspective, the transaction looks identical to a real player purchase.
What the system buys
| Category | Examples |
|---|---|
| Mining | Cobblestone, stone, deepslate, iron ingot, gold ingot, diamond, coal, redstone, lapis, copper |
| Wood | Oak log, spruce log, birch log, planks |
| Farming | Wheat, carrots, potatoes, sugar cane, melon, pumpkin |
| Food | Cooked beef, cooked chicken, bread |
| Building | Glass, bricks, sand, gravel |
| Mob drops | String, gunpowder, bones, leather, feathers |
| Nether/End | Quartz, glowstone, chorus fruit, blaze rod |
Items the system will NOT buy
Beacons, totems of undying, ender pearls, shulker boxes, elytra, mob spawners, and other high-value or exploit-prone items.
Demand controls
| Control | Purpose |
|---|---|
| Daily spending cap | Bank stops buying after a server-wide daily limit |
| Per-owner cap | No single shop owner receives more than a set share of the daily budget |
| Per-shop cooldown | Waits between purchases from the same shop |
| Intensity profiles | Activity scales with server population and time of day |
| Bank floor | Stops all activity if the CentralBank balance drops below a safety threshold |
Economy integration
The system is tightly integrated with the server's custom economic infrastructure:
- Transactions are flagged
simulated: truein the transaction log. - The CPI excludes simulated transactions — it reflects real player prices only.
- The Monetary policy engine classifies payouts as transfers from reserve, not new money creation.
- A 7-day lagged CPI snapshot prevents the system from chasing its own price signal.
Visibility
The system is intentionally invisible to players:
- No command reveals bank buy prices or the shopping list.
- The /market command shows real player data only.
- Shop owners cannot distinguish simulated purchases from real ones.
Admin commands
| Command | Description |
|---|---|
/simshop status |
Bank balance, daily spend, pause state |
/simshop pause |
Pause all activity |
/simshop resume |
Resume activity |
/simshop refill <amount> |
Add funds to CentralBank |
These require staff permissions.
See also
- Consumer Price Index — the price index (excludes simulated trades)
- Monetary policy engine — the inflation management system
- Economy — how money flows through the server
- ChestShop — how to create player shops
- Admin shop — the separate server-run shop
- Trading — trading methods and price discovery