← The Frontier Suite

FrontierShop

v1.12.0Flagship · 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 a category-based server shop (the shipped catalog has 8 categories and 119 items; mc.pvpers.us runs 200) 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 (by default the server buys at most appetite × 5 of each item per day) rather than price-crushing, and only plain, unenchanted, undamaged items sell. Past the cap (or past your own share of it) the shop doesn’t refuse: it keeps buying at a tapering rate, 50 % of today’s sell price for the next allowance-width of units, then 25 %, then 10 % until midnight. Tapered units count per player and per connection, use no warehouse room and don’t push the price down further. On top of the cap: each player (and each connection) may sell only a share of it at full price, the cap scales with active players, and the warehouse won’t buy from you until you’ve played 30 non-AFK minutes that week. mc.pvpers.us runs a tighter ticker (warehouse ×1, index 30–140 %, daily moves up to 10 % with a 15 % pull back toward par).

Land upkeep (with Lands): claimed chunks cost a daily upkeep. An active land that can’t pay keeps its chunks and goes into debt — no new claims or bank withdrawals, and deposits pay the debt first — and only unclaims once inactive or after too long in debt (14 days on mc.pvpers.us). Unclaimed chunks can be reclaimed free for 30 days with /upkeep reclaim. An optional town discount lowers upkeep for lands with active members (on at mc.pvpers.us, off by default). Villager trade discounts from curing, Hero of the Village and gossip are stripped.

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.3+, 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) · Lands (land upkeep, upkeep debt and the town discount) · EssentialsX (AFK detection for the dynamic warehouse cap and sell gate) · 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)
/upkeep [land] (also /town)EveryoneYour land’s upkeep status (needs Lands)
/upkeep debt [land]EveryoneShow a land’s upkeep debt
/upkeep reclaimEveryoneReclaim chunks lost to unpaid upkeep, free, within 30 days
/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
/shopadmin activeAdminActive-player count behind the dynamic warehouse cap
/shopadmin upkeep debts|debt|forgive|audit|lost|minutes|settle …AdminLand-upkeep administration: list debts, inspect or forgive one, audit, lost chunks, activity minutes, settle

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.upkeeptrue/upkeep (and /town)
frontier.shop.adminop/shop reload, all of /shopadmin, shift-click listing removal in /market, breaking other players’ shop signs

Legacy pishop.* nodes are still declared, but children only resolve downward: holding pishop.x does not grant frontier.shop.x. Old grants appear to keep working only because the player nodes default to true.

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 spawner_random_* entries are not in the shipped config — add rows yourself.
  • +Market sales are paid straight to the seller’s balance, even offline. The market’s own mailbox (in market.db) only holds returned items — FrontierShop does not deliver through FrontierMail.
  • +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.