Skip to content
OrePlugins

MarketPulse

Available

Every line in the market has a stock level. Buying drains it and the price rises; selling refills it and the price falls; everything drifts back toward its baseline on a timer. A fixed sell price plus an iron farm is an infinite money printer, and the usual fix is nerfing the price for everybody forever — paid for by the players who were mining by hand.

What it does

  • A bulk order is not filled at one price

    Each unit is priced at the stock level it is actually traded at, and the quote is the sum. One diamond costs $120; sixty-four cost $7,723.88, not $7,680. Selling works the same way in reverse — dumping ten stacks of iron walks the price down across your own order and pays you the average. Quote the shelf price and multiply, as most shops do, and a whale clears the whole order before the market reacts at all.

  • Farms stop being money printers

    Elasticity is set per item, and the shipped defaults are opinionated: cobblestone and iron react hard because generators and farms are effortless, while diamond reacts less because it is mined by hand far more often than it is farmed. The player grinding an iron farm watches their own output lose value as it lands. The player mining by hand is not punished for somebody else’s machine.

  • Prices recover on their own

    Every few minutes each item closes a fraction of the gap back to its baseline. Without it a market only ratchets — whatever the first week does to iron is iron’s price for the lifetime of the server, and a new player arrives to an economy somebody else already solved. Drift runs only while the server is up, on purpose: prices should recover from play, not from downtime.

  • It will not buy your good gear at scrap prices

    Only plain items trade. A Mending netherite pickaxe is still a NETHERITE_PICKAXE, and a market that matched on material alone would buy it at the price of a bare one. Every match compares the whole stack against a freshly constructed one, so enchantments, custom names, damage, potion contents and anything a future Minecraft version invents all fail the check without the plugin having to know they exist.

  • A market a Bedrock player can actually use

    With Floodgate installed, Bedrock players get native forms instead of chest menus; without it, everyone gets chest menus and that is a supported configuration rather than a degraded one. Every action is a single plain click, because Bedrock has no reliable shift-click, no hover text and no tab-complete — so nothing a player needs in order to choose is hidden in an item tooltip.

  • An append-only record of every trade

    Who bought what, how many, and what it actually cleared at. A trade is never updated or deleted, because this is the answer to “why is diamond worth half what it was on Tuesday” and a history that can be rewritten cannot answer it. Operator stock corrections are deliberately kept out of it — they are not trades, and putting them there would make the ledger lie about where the money went.

Compatibility

Catalogue
70 items in 6 categories out of the box, fully editable
Storage
SQLite (data.db), WAL, fetched by Paper on first start
Economy
Vault. Refuses to trade without one rather than faking it
Price curve
base x (base-stock / stock) ^ elasticity, floored and capped
Money
Whole cents as a long, end to end. Never a double
Sell caps
Optional per item, on a window that starts at the first sale

Commands

Permissions default to true for player commands and op for admin ones.

MarketPulse commands and permissions
CommandWhat it doesPermission
/marketpulseOpen the market. Aliases /market, /shop and /mp, each droppable in the config.marketpulse.use (everyone)
/marketpulse price (item) [qty]What it costs right now — including what a bulk order would really clear at.marketpulse.use
/marketpulse buy (item) [qty|all] · /marketpulse sell (item|hand) [qty|all]Trade from chat. Orders are trimmed to what you can hold, afford or still sell, then re-priced.marketpulse.use
/marketpulse sellallSell everything tradeable you are carrying, each line priced separately.marketpulse.use
/marketpulse top [rising|falling]What is short and what is a glut, right now.marketpulse.use
/marketpulse history [player|all]The ledger. Your own by default; anyone’s with the extra node.marketpulse.history (everyone)
/marketpulse stock (item) [amount|reset]Read or set a stock level — the direct way to move a price without a trade.marketpulse.admin
/marketpulse driftRun one recovery step now, so you can see a setting you just changed take effect.marketpulse.admin
/marketpulse commandsWhich command names this plugin actually owns on your server.marketpulse.admin

Before you buy

  • Is this a player shop plugin?

    No, and the difference matters. Nobody sets up a stall — this is one server-run market that everybody trades against, which is what makes supply and demand mean anything. A hundred private shops each have their own price and none of them move. If you want player-run stalls, that is MarketStalls, and the two are designed to sit side by side: MarketStalls is player-to-player, MarketPulse is the server market that sets the reference price.

  • Can the market run out of something?

    Never. Stock is a price index, not a warehouse. Buy an item down far enough and it simply becomes very expensive, capped at its ceiling. “The shop is out of dirt” is not a failure mode worth having, and a plugin that has it spends its life being restocked by an operator.

  • What happens if I run another plugin that owns /shop or /market?

    Whoever enables first wins the bare word, and no setting on either side changes that — Bukkit is first-come-first-served and the loser is told nothing. MarketPulse registers /marketpulse as its primary name so it is always reachable, checks whether it actually got each alias, and says so on the startup line. /marketpulse commands answers the same question months later. To hand a name over deliberately, drop it from commands.aliases.

  • Do I have to use the 70 items it ships with?

    No. market.yml is yours — add, remove and reprice freely, and set elasticity per item to decide how hard each one reacts. Note that a later version will not add new items to a market.yml you already have: your file wins outright, because silently adding tradeable lines to a live economy on an update would be much worse than leaving it to you.

  • What stops someone buying and instantly selling back?

    The spread, which defaults to 25%. A round trip always loses money — deliberately, because at a zero spread a player could churn an item’s stock in both directions, moving the price for everybody else, at no cost all day. It is also your main money sink; raise it if your economy inflates.

  • What happens if the economy plugin refuses a transaction?

    Nothing moves. On a purchase the money leaves first and any undelivered unit is refunded at the price it was charged at; on a sale the goods leave first and go straight back if the deposit does not land. There is no ordering with no bad branch — there is only an ordering whose bad branch cannot create items or money out of nothing.