-
Notifications
You must be signed in to change notification settings - Fork 2
Configuration
DynamicShop Admin edited this page Apr 21, 2026
·
2 revisions
DynamicShop is designed to be highly configurable. Almost everything can be customized through the config.yml file or securely via the Web Dashboard (/shopadmin webadmin).
Below is an exhaustive explanation of every configuration option available.
economy:
sell_tax_percent: 30
transaction_cooldown_ms: 0-
sell_tax_percent: The percentage of value deducted when a player sells an item to the server. Setting this to30means the player gets70%of the item's current buy price. This creates an economic sink. -
transaction_cooldown_ms: Delay (in milliseconds) required between transactions to prevent spam logging/macros.
gui:
shop_menu_size: 54-
shop_menu_size: The size of the main shop menu. Must be a multiple of 9 (e.g., 27, 36, 45, 54). Note that the bottom 9 slots are unconditionally reserved for navigation buttons.
DynamicShop runs its own fully-featured embedded web server for live dashboards.
webserver:
enabled: true
port: 7713
bind: "0.0.0.0"
hostname: ""
admin-enabled: true
force-update-files: false
cors:
enabled: true
ssl:
enabled: false
keystore-path: "keystore.jks"
keystore-password: "password"-
enabled: If true, starts the built-in HTTP dashboard. -
port: The port to listen on. Forward this in your network if you want public access. -
bind: IP address to bind to.0.0.0.0binds to all interfaces. -
hostname: The IP or Domain Name generated for admin links. If left empty"", it auto-detects from the server. -
admin-enabled: Unlocks the/shopadmin webadmincommand, allowing admins to modify items and prices from their browser securely. -
force-update-files: If true, overwrites the HTML/JS source files in yourplugins/DynamicShop/webfolder on server start exactly as they are in the plugin jar (useful for updating plugin versions). -
cors.enabled: Enables Cross-Origin Resource Sharing if using external sites. -
ssl.enabled: Enables direct HTTPS support using a Java KeyStore instead of throwing it behind Nginx.keystore-pathandkeystore-passwordare required if enabled.
logging:
max_recent_transactions: 10000-
max_recent_transactions: The maximum number of transactions that are preserved in memory to be shown as a live ticking feed on the Web Dashboard. Older logs are discarded.
This block handles the simulation of the supply & demand logic.
dynamic-pricing:
enabled: true
use-stock-curve: true
curve-strength: 0.9
max-stock: 500
min-price-multiplier: 0.01
max-price-multiplier: 20.0
negative-stock-percent-per-item: 5.0
use-time-inflation: true
hourly-increase-percent: 2.0
shortage-decay-percent-per-hour: 2.0
restrict-buying-at-zero-stock: true
log-dynamic-pricing: false-
enabled: Master toggle. If false, shop uses perfectly static pricing. -
use-stock-curve: Enables the primary math curve where increased stock = lowered price. -
curve-strength: How steeply the price decays.0.9means at max stock, the item costs 10% of its base price. -
max-stock: The baseline numeric threshold at which stock is considered "plentiful". This does not restrict physical storage. -
min-price-multiplier: The hardest floor a price can hit.0.01= Never cheaper than 1% of base price. -
max-price-multiplier: The hardest ceiling a price can hit.20.0= Never more expensive than 20x base price. -
negative-stock-percent-per-item: Every unit requested beyond0inflates the base price by this percent. -
use-time-inflation: Triggers hourly inflation routines on items that are in debt/shortage. -
hourly-increase-percent: Compounding price markup per hour for items with zero or negative stock. -
shortage-decay-percent-per-hour: When an item finally gains positive stock, its previously accumulated shortage hours will decay optimally according to this multiplier. (e.g. 2.0 means if the stock is maxed, it sheds 2 hours of inflation per hour). -
restrict-buying-at-zero-stock: If true, players cannot force an item into negative stock; purchases become disabled exactly at 0. -
log-dynamic-pricing: Will spam your console with calculus debug info if you like raw numbers.
player-shops:
max-listings-per-player: 27
enabled: true-
enabled: Enables player auctions within the system. -
max-listings-per-player: Disables placing more than this many concurrent items on the market at once.
DynamicShop has a massive advantage of allowing seamless inter-server syncing of all prices/stock WITHOUT Redis/MySQL via an internal custom Mesh Network!
cross-server:
enabled: false
port: 5556
save-interval-seconds: 600
peers:
- 192.168.1.10
- 192.168.1.11:5556-
enabled: Activates P2P Mesh configuration. -
port: The port this specific server should open and listen on. -
save-interval-seconds: Since information operates in memory across networks, the system commits current states toshopdata.ymlevery 10 minutes. -
peers: Formatted as IP or IP:PORT. An explicit list of all sibling servers this instance should immediately alert roughly <100ms apart from any transaction!
While items: defaults to simply { base: Price }, there are numerous hidden parameters you can attach that override global behaviors specifically for this single item!
items:
DIAMOND:
base: 100.0 # The baseline cost of this item
rate: 2.0 # Replaces negative-stock-percent-per-item (Only inflates 2% instead of global 5%)
min-stock: 100.0 # The Stock pricing curve treats 100 as its "0 point"
max-stock: 1000.0 # Overrides the global max-stock just for this item
min-stock-storage: -50 # Hard limits players from selling past a debt of 50.
max-stock-storage: 5000 # Hard limits players from inflating stock continuously past 5000.
disable-sell: false # If true, players cannot physically sell this item to the shop
disable-buy: false # If true, players cannot physically buy this item from the shop
category: BLOCKS # Overrides the category auto-detection