Skip to content

Configuration

DynamicShop Admin edited this page Jul 17, 2026 · 5 revisions

Configuration Guide

This page documents the settings implemented by DynamicShop 2.6.4. The bundled config.yml is the source for the complete item catalog and category defaults.

Configuration Upgrades

At startup and during /shopadmin reload, DynamicShop copies missing bundled defaults into an existing configuration. It deliberately skips the items and special_items sections, so an upgrade does not replace the shop catalog or special entries.

Back up plugins/DynamicShop before upgrading. A reload refreshes plugin data and most cached settings, but it does not rebuild running network services. Restart the server after changing web bind, port, SSL, CORS, web enablement, cross-server enablement, cross-server port, or peers. Reload after changing restock rules.

Economy

Bundled defaults:

economy:
  sell_tax_percent: 30
  transaction_cooldown_ms: 0
  • sell_tax_percent is applied to the integrated sell value.
  • transaction_cooldown_ms limits repeated transactions. 0 disables the cooldown.
  • economy.system is an optional setting: vault by default or coinengine.
  • economy.default_currency defaults to coins in CoinsEngine mode.
  • items.<material>.currency overrides the currency for one item.
  • categories.<category>.currency is the next CoinsEngine lookup level. Item currency takes priority, followed by category currency, then the default.
  • Vault and ProtocolLib remain hard dependencies in plugin.yml, including when CoinsEngine mode is selected. If CoinsEngine cannot initialize, DynamicShop falls back to Vault.

GUI And Input

gui:
  shop_menu_size: 54
  filler_material: "AIR"
  use_dialog_gui: false
  • shop_menu_size must be an inventory size divisible by 9. The last nine slots are reserved for navigation.
  • filler_material accepts a Bukkit material or a Nexo ID such as nexo:shop_empty_slot.
  • use_dialog_gui enables Paper's item transaction dialog when the required Paper Dialog API is available. Classic inventory transaction controls remain the fallback.
  • Floodgate is used to detect Bedrock players, but 2.6.4 opens the Bukkit inventory action GUI for them; it does not implement native Bedrock forms.
  • Optional top-level input-method accepts auto, dialog, anvil, or chat for admin text/number prompts. auto prefers Paper dialogs, then AnvilGUI, then chat. A forced unavailable method falls back to chat.

Web Server

webserver:
  enabled: true
  port: 7713
  bind: "127.0.0.1"
  hostname: ""
  admin-enabled: true
  force-update-files: false
  cors:
    enabled: false
  ssl:
    enabled: false
    keystore-path: "keystore.jks"
    keystore-password: "password"
  • enabled starts the embedded Javalin server during plugin startup.
  • bind defaults to loopback. Use 0.0.0.0 only when direct network access is intentional and firewalled.
  • hostname is inserted into generated admin links. Set it to a host name or IP without scheme or port. When blank, DynamicShop tries Paper's virtual host through a compatibility lookup, then Bukkit server-ip, then localhost.
  • Generated 2.6.4 links use http:// and the configured port. For a reverse proxy or public HTTPS origin, preserve the token path but use the external scheme, host, and port.
  • admin-enabled: false leaves the public dashboard available but does not register the admin routes.
  • force-update-files re-extracts bundled web assets at startup.
  • cors.enabled: true permits any origin in 2.6.4. It is not restricted to a configured allowlist.
  • Native SSL requires a valid Java KeyStore. Relative paths resolve under plugins/DynamicShop.

The public dashboard and its transaction analytics endpoints are unauthenticated. See Web Dashboard before exposing it publicly.

Logging

logging:
  max_recent_transactions: 10000

This limits the recent transaction window retained in memory and reloaded for web analytics. Transaction CSV and daily log files are written separately; this setting does not cap their on-disk retention.

Dynamic Pricing

Bundled defaults:

dynamic-pricing:
  enabled: true
  use-stock-curve: true
  curve-strength: 0.9
  max-stock: 500
  min-price-multiplier: 0.01
  max-price-multiplier: 2.0
  negative-stock-percent-per-item: 5.0
  use-time-inflation: true
  hourly-increase-percent: 2.0
  shortage-decay-percent-per-hour: 2.0
  high-inflation-correction-enabled: true
  high-inflation-correction-threshold-percent: 100.0
  high-inflation-correction-reduction-percent: 50.0
  restrict-buying-at-zero-stock: true
  log-dynamic-pricing: false

max-stock and per-item min-stock are pricing boundaries, not transaction limits. shortage-decay-percent-per-hour is hours removed per real hour at full stock, scaled by the current stock ratio. See Dynamic Pricing for the exact piecewise formula, bulk integration, clamps, and storage controls.

Player Shops

player-shops:
  max-listings-per-player: 27
  enabled: true

Player shops are fixed-price listings for the entire stack held by the seller. max-listings-per-player is enforced. In 2.6.4, player-shops.enabled is loaded and shown in admin configuration screens but is not checked by the listing or browsing paths, so setting it to false does not actually disable player shops.

Restock

restock:
  enabled: false
  rules:
    - category: FOOD
      stock: 200
      interval-minutes: 30

Each rule schedules one normal tracked-material category and directly sets every matching item's stock to the target. The minimum interval is one minute. A positive direct stock assignment resets regular-item shortage hours. Restock does not target permission entries, server-shop entries, player listings, or special-item variants.

Cross-Server Sync

cross-server:
  enabled: false
  port: 5556
  peers:
    - 192.168.1.10
    - 192.168.1.11:5557
  save-interval-seconds: 600

The JeroMQ mesh broadcasts transaction-driven stock, purchase totals, and last-transaction timestamps for normal materials and variants. It does not synchronize configuration, base prices, shortage hours, categories, templates, special items, player listings, accounts, or logs. Derived prices only agree when each server's local configuration and shortage state also agree.

Admin stock setters and scheduled restocks use direct assignments and do not broadcast those changes. save-interval-seconds controls queued shopdata.yml persistence while cross-server mode is enabled; it is not a network latency target. Restart after changing mesh settings.

Item Options

items:
  DIAMOND:
    base: 100.0
    rate: 2.0
    min-stock: 0.0
    max-stock: 1000.0
    min-stock-storage: 0
    max-stock-storage: 5000
    disable-sell: false
    disable-buy: false
    category: MISC
    custom_name: "Premium Diamond"
    currency: coins
    template: <Bukkit-serialized ItemStack>
  • base: -1 hides/disables a regular item.
  • rate overrides the negative-stock percentage.
  • min-stock and max-stock define pricing regions.
  • min-stock-storage is the hard floor for purchases.
  • max-stock-storage is the hard ceiling for sales.
  • disable-buy and disable-sell block their respective actions.
  • category overrides automatic category detection.
  • custom_name overrides the displayed material name.
  • currency is used only in CoinsEngine mode.
  • template is managed as a Bukkit-serialized ItemStack under this item.

Special Items

special_items entries are generated by admin commands and can deliver plain materials, stored ItemStacks, Nexo, ItemsAdder, ValhallaMMO, permissions, groups, or console commands. Entries generated by the admin commands use their own fixed prices. See Custom Items and Templates and Commands and Permissions.

Clone this wiki locally