mc.pvpers.us
Online
← The Frontier Suite

FrontierShop

v1.7.4Flagship · economy

Server shop and player market GUIs with daily-ticker pricing, deals, a rotating black market and upgradeable custom items.

What it does

/shop opens an 8-category, 119-item server shop where every slot is its own terminal (left-click buy 1, shift-left buy a stack, right-click sell 1, shift-right sell everything matching), and /market opens a player market for listing your own items at your own price.

Prices ride a daily ticker: each item has a price index that re-prices *once a day at local midnight* from yesterday’s net player flow (clamped 60–140 %), buy and sell both ride the same index so the spread never changes and a dumped item eventually becomes cheap to buy back. Prices never move mid-day; the anti-farm guard is a daily warehouse cap (the server buys at most appetite × 5 of each item per day) rather than price-crushing, and only plain, unenchanted, undamaged items sell.

On top of that: seeded daily deals, [shop] sign shops on chests, and a buy-only black market that opens on fixed weekly windows with per-window stock and rosters that rotate by weekday — selling vanilla contraband you can’t normally get in survival (spawn eggs, mob heads, loot-only gear), captured mob spawners, and five tiered custom trinkets plus three consumables that players level up at an Upgrade Station.

Requires & integrates with

Required
Paper 26.2+, Java 25+
Optional
Vault + a Vault-registered economy (all money; without it the GUIs open but every transaction is refused with "The economy is offline") · FrontierBorder (its server-timezone sets the "local midnight" used by the ticker, deals and black-market windows) · a claim plugin such as Lands or GriefPrevention (protects sign-shop chests from hoppers and pistons — the plugin only guards sign/chest breaking and explosions)
Used by
FrontierStatsAPI (reads demand.db / market.db / sales.db read-only for catalog, market, deals, price history and black-market endpoints)

Commands

Sign shops have no command: place a sign on a chest or barrel and write [shop] / <amount> / <price>; the chest’s first item becomes the offer.

CommandWhoWhat it does
/shopEveryoneOpen the server shop GUI
/shop upgradeEveryoneOpen the Upgrade Station (same as the anvil button in /shop) — pay money to raise the held custom item one tier
/shop reloadAdminRe-read config.yml and rebuild the catalog (ticker indexes and market data kept)
/marketEveryoneBrowse the player market GUI (also the emerald in /shop)
/market sell <price>EveryoneList the whole held stack at a price (listing tax applies)
/shopadmin listings [player]AdminList live market listings with IDs (console-friendly)
/shopadmin removelisting <id>AdminPull a listing — item returns to the seller’s mailbox, seller notified (staff can also shift-click a listing in /market)
/shopadmin price <material> <buy> <sell> [appetite]AdminPersistent price override written to overrides.yml; price <material> clear removes it
/shopadmin ticker <material>AdminShow index, overnight change, live prices, today’s sold/bought and warehouse left (demand is an alias)
/shopadmin ticker reset <material|all>AdminSnap the index back to 100 % and clear today’s counters
/shopadmin dealsAdminShow today’s daily deals with effective prices
/shopadmin blackmarket [status]AdminInspect the black-market window and remaining stock
/shopadmin blackmarket open [day…] [minutes]AdminForce a window open (default 30 min); add a weekday (open friday 60) to preview only that night’s roster
/shopadmin blackmarket closeAdminClose a window early — stays shut for the rest of that scheduled window

Permissions

Player features default to true, staff features to op. Every node follows frontier.<plugin>.<action>, so a LuckPerms setup is e.g. lp group default permission set frontier.shop.use true. Wildcards work: frontier.reputation.*.

NodeDefaultGrants
frontier.shop.usetrue/shop, /shop upgrade, /market, /market sell
frontier.shop.signshoptrueCreating [shop] signs on chests and barrels
frontier.shop.adminop/shop reload, all of /shopadmin, shift-click listing removal in /market, breaking other players’ shop signs

Legacy pishop.* nodes are declared as children of the frontier.shop.* nodes, so old permission grants keep working.

Config reference

File

plugins/FrontierShop/config.yml

To apply changes

/shop reload

Good to know

  • +Data files in plugins/FrontierShop/: demand.db (ticker state), market.db (listings, mailbox, notices), sales.db (price history, deal picks, black-market window/stock), overrides.yml (admin price overrides — kept separate so config.yml is never rewritten). All SQLite files run in WAL mode so other tools can read them live; if a DB fails to open the shop degrades to in-memory and keeps working.
  • +Midnight rollover is lazy (missed days are replayed on first access) and keyed to the JVM timezone; the same clock drives daily deals and black-market windows, so set FrontierBorder’s server-timezone on a UTC host.
  • +The plugin warns on boot if any catalog pair is arbitrage-risky (sell more than ~60 % of buy); fix in config or with /shopadmin price. Boat and utility sinks like Lead and Name Tag ship with sell: 0 on purpose.
  • +Black-market stock is per window and keyed by entry (custom id or material), so several rows sharing a material never collide; closing a window with /shopadmin blackmarket close keeps it shut until the next scheduled one. The v1.7.4 spawner_random_* entries are not in the shipped config — add rows yourself.
  • +Most-tweaked knobs: catalog prices and appetites, market.tax, blackmarket.schedule and roster days, and the level-N-cost curves for the Upgrade Station.

Looking for something specific? Search the whole suite.