Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Simulated ChestShop: Difference between revisions

From Prosperity SMP Wiki
Initial content
 
VxMac (talk | contribs)
Add sale notification + bedrock support sections
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
The '''Simulated ChestShop''' system is an automated market activity engine on Prosperity SMP. It creates background buying activity at player-owned [[ChestShop]] signs, ensuring that shops see regular traffic even during low-population hours. The system is designed to be invisible to players — it behaves like a normal customer.
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 with no buyers. 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 does '''not''' sell items to players. It only buys. This makes it a pure money faucet into player hands, funded by the CentralBank reserve.
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 '''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 it is willing to buy.
 
# 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 is selling an item on the shopping list at a reasonable price, the system may purchase from it.
# 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, just like a normal sale.
# The shop owner receives payment to their balance, identical to a normal sale.
# The purchased items are removed from the chest (the bank does not stockpile).
# If the shop owner is online, the system sends a chat notification: ''+$X sale: <buyer> bought Yx <item> from your shop.''
# 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.
 
== Sale notifications ==
 
When a simulated buyer purchases from a player's shop, the shop owner receives a chat message identifying the buyer persona, item, quantity, and payment amount. The notification only fires if the seller is online at the moment of sale; offline sellers see no notification but their balance reflects the sale on next login.
 
The notification was added on 2026-05-28 in response to player feedback that sim shop sales were silently increasing balances without indication of source.
 
== Bedrock shop owners ==


From the shop owner's perspective, the transaction looks identical to a real player purchase. The system uses randomized persona names in logs to avoid easy identification.
The system supports player shops owned by Bedrock Edition players. Floodgate's bedrock-prefix (<code>.</code>) is preserved on the sign and routed through the system's UUID resolver, which looks up the player's full Bedrock IGN even when the shop sign truncates names longer than 15 characters.


== What the system buys ==
== What the system buys ==
The shopping list includes common economy staples:


{| class="wikitable"
{| class="wikitable"
|-
|-
! Category !! Example items
! Category !! Examples
|-
|-
| Mining || Cobblestone, stone, deepslate, iron ingot, gold ingot, diamond, coal, redstone, lapis lazuli, copper ingot
| 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 52:
|-
|-
| 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
|}
|}


Each item has a maximum buy price based on the server's market data. The system will not overpay — if a shop prices above the fair range, the system skips it.
=== Items the system will NOT buy ===


== Demand governor ==
Beacons, totems of undying, ender pearls, shulker boxes, elytra, mob spawners, and other high-value or exploit-prone items are excluded from the sim shop's purchase list. Players can still sell these to the [[Admin shop]] at a floor price.
The system has built-in controls to prevent it from dominating the market:


; Daily spending cap
== Demand controls ==
: The bank has a maximum daily spend limit across all purchases. Once the cap is reached, the system pauses until the next day.


; Per-shop cooldowns
{| class="wikitable"
: After buying from a shop, the system waits before buying from the same shop again.
|-
 
! Control !! Purpose
; Per-owner caps
|-
: No single shop owner receives more than a set percentage of the daily budget.
| Daily spending cap || Bank stops buying after a server-wide daily limit
 
|-
; Intensity profiles
| Per-owner cap || No single shop owner receives more than a set share of the daily budget
: Activity levels adjust based on time of day and player count. During peak hours with many real buyers, the system backs off. During off-peak hours, it increases activity to keep the market moving.
|-
| 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
|}


== Relationship to the economy ==
== Economy integration ==
Simulated ChestShop activity is tracked separately from real player-to-player trades in the server's economic monitoring systems:


* Simulated transactions are marked with a <code>simulated: true</code> flag in the transaction log.
The system is tightly integrated with the server's custom economic infrastructure:
* The [[Economy|CPI (Consumer Price Index)]] calculation '''excludes''' simulated transactions. CPI reflects real player-to-player prices only.
* The [[Economy|monetary policy engine]] classifies bank-to-player payouts as transfers from the public reserve, not new money creation. The money was already created when an admin funded the CentralBank.


This separation prevents a feedback loop where the bank's buying activity inflates the CPI, which then causes the bank to buy at higher prices.
* 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.


== Visibility ==
== Visibility ==
The system is intentionally invisible to players:


* No public <code>/market</code> command reveals the bank's exact buy prices or shopping list.
The system is intentionally invisible to players except for the sale notification described above:
* Transaction log entries use randomized persona names.
* The [[Economy|/market command]] shows real player-to-player CPI data only, not bank activity.
* Shop owners see normal sale notifications — they cannot distinguish a simulated purchase from a real one.


Admins can monitor and configure the system through the <code>/simshop</code> command (staff only).
* No command reveals bank buy prices or the shopping list.
* The [[Economy|/market command]] shows real player data only.
* Shop owners cannot distinguish simulated purchases from real ones in the transaction log.


== Admin commands ==
== Admin commands ==
{| class="wikitable"
{| class="wikitable"
|-
|-
! Command !! Description
! Command !! Description
|-
|-
| <code>/simshop status</code> || View bank balance, daily spend, and pause state
| <code>/simshop status</code> || Bank balance, daily spend, pause state
|-
|-
| <code>/simshop pause</code> || Temporarily pause all activity
| <code>/simshop pause</code> || Pause all activity
|-
|-
| <code>/simshop resume</code> || Resume activity
| <code>/simshop resume</code> || Resume activity
|-
|-
| <code>/simshop refill &lt;amount&gt;</code> || Add funds to the CentralBank
| <code>/simshop refill &lt;amount&gt;</code> || Add funds to CentralBank
|}
|}


These commands require staff permissions and are not available to regular players.
These require staff permissions.


== See also ==
== See also ==
* [[Economy]] — how the economy works, including money flow and inflation
 
* [[Consumer Price Index]] — the price index (excludes simulated trades)
* [[Monetary policy engine]] — the inflation management system
* [[Item worth]] — the unified pricing engine used by tooltips
* [[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 (separate system)
* [[Admin shop]] — the separate server-run shop
* [[Trading]] — trading methods and price discovery
* [[Trading]] — trading methods and price discovery
* [[Getting started]] — includes shop setup guide


[[Category:Plugins]]
[[Category:Plugins]]
[[Category:Systems]]

Latest revision as of 03:11, 29 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

  1. The system maintains a shopping list of approximately 130 common items with internal maximum buy prices.
  2. Every few minutes, it scans active player ChestShop signs for eligible items.
  3. If a shop sells an item on the list at or below the max price, the system may purchase.
  4. The shop owner receives payment to their balance, identical to a normal sale.
  5. If the shop owner is online, the system sends a chat notification: +$X sale: <buyer> bought Yx <item> from your shop.
  6. 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.

Sale notifications

When a simulated buyer purchases from a player's shop, the shop owner receives a chat message identifying the buyer persona, item, quantity, and payment amount. The notification only fires if the seller is online at the moment of sale; offline sellers see no notification but their balance reflects the sale on next login.

The notification was added on 2026-05-28 in response to player feedback that sim shop sales were silently increasing balances without indication of source.

Bedrock shop owners

The system supports player shops owned by Bedrock Edition players. Floodgate's bedrock-prefix (.) is preserved on the sign and routed through the system's UUID resolver, which looks up the player's full Bedrock IGN even when the shop sign truncates names longer than 15 characters.

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 are excluded from the sim shop's purchase list. Players can still sell these to the Admin shop at a floor price.

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: true in 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 except for the sale notification described above:

  • 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 in the transaction log.

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