MarketStalls
AvailablePlace a barrel, hold what you want to sell, and set a price — no sign to format and nothing to type on a phone. What is in the box is the stock, so a shop that has run out is a box that is empty. And it is a barrel on purpose: a chest is two blocks, and on a shop plugin that protects only one of them, anybody willing to place a chest beside your shop can empty it without touching a protected block.
- Economy & Shops
- World & Protection
- player shops
- barrels
- no signs
- bedrock
- vault
What it does
A chest is two blocks. That is the whole design.
Chests pair when a second one is placed beside them, and the two halves share one inventory — so a shop plugin that protects "the block the shop is on" can be emptied by anybody willing to place a chest next to it. No protected block is touched, nothing is broken, and every protection check on the server sees a player opening a chest they just placed, because that is exactly what happened. A barrel has no second half. Where you do allow chests, a double chest cannot become a stall and a chest cannot be placed against one — by anybody, including the owner.
The stock is the box
What a stall sells comes out of the container and what it buys goes into it. There is no virtual inventory to drift out of step with the shelf, no restock command, and no way for a shop to claim it has something it does not. A shop that is out of stock is a box that is empty, which is a thing its owner can see and fix without asking anybody what went wrong.
No signs, which is the Bedrock feature
Place the barrel, hold the item, run /stall. The price is a text box on Bedrock and the chat line on Java — each platform answering the same question the way it actually can. The players most likely to run a shop on a modern server are the ones least able to type [Shop] on line one of a sign from a phone, and a sign shop quietly excludes them.
The money and the items can never disagree
Every trade checks everything first, settles both halves of the money before a single item moves, and reverses cleanly if the last step fails. The tempting order is items-then-money, and it is the wrong way round: a failed payment after the goods have gone means chasing them out of somebody’s inventory, and there is no reliable way to do that. A customer who cannot pay is refused and nothing moves; a stall whose owner has run out of money says so and takes nothing.
/market tells you where to walk
Search the whole server for who is selling something and get coordinates, a distance and a compass bearing — not a teleport, and not a menu you buy from where you stand. Once nobody has to go to the shops, the market district is a spreadsheet with a skin on and the plots people built are decoration. Add a warp if you want the convenience: that is a decision about your economy, and you should get to make it.
Nothing empties a shop from outside
A hopper cannot move anything into or out of a stall — both directions, because filling the box is a denial of service that costs the attacker a stack of cobblestone. Explosions have stall blocks removed from the blast rather than being cancelled, so a creeper hole still looks like a creeper hole with the shops standing in it. Pistons cannot move one, fire cannot burn one, and nobody but the owner can open or break one.
Compatibility
- Stall blocks
- Barrels by default; chests opt-in, with the pairing hole closed
- Stock
- The container’s real contents — nothing virtual
- Both directions
- A stall can sell, buy, or do both, at prices per lot
- Server stalls
- Infinite stock and bottomless funds, on their own permission
- Storage
- SQLite (data.db), WAL, fetched by Paper on first start
- Dependencies
- Vault plus an economy plugin. Floodgate optional
Commands
Permissions default to true for player commands and op for admin ones.
| Command | What it does | Permission |
|---|---|---|
/stall | At a container: make it a shop, manage yours, or shop at somebody else’s. | marketstalls.use (everyone) |
/stall list · /stall log | Your shops with prices, stock and coordinates; and what has been bought and sold at them. | marketstalls.use |
/stall remove | Stop it being a shop. The box and everything in it is untouched. | marketstalls.use |
/stall admin | Make it a server stall: infinite stock, bottomless funds, a faucet and a sink. | marketstalls.adminstall |
/market [item] · /market buying [item] | Who is selling it and where to walk — or who will pay you for it. | marketstalls.market (everyone) |
/marketstalls prune | Forget stalls whose container is gone. Manual on purpose. | marketstalls.manage |
/marketstalls commands | Which command names this plugin actually owns on your server. | marketstalls.manage |
Before you buy
How is this different from ShopSigns?
Different idiom, and your membership covers both — pick the one your server prefers rather than choosing between purchases. ShopSigns is the classic sign-and-chest shop, which is what most players already know how to use. MarketStalls has no signs at all: a barrel and a panel, so a Bedrock player never types anything, plus /market to find a shop by item and walk to it. The barrel is also a security decision — see the first point above.
Why barrels rather than chests?
Because a chest is two blocks and the halves share one inventory, so half of a chest shop is a container that a plugin protecting one block does not protect. You can allow chests, and MarketStalls then refuses to put a stall on a double chest, refuses to let anyone place a chest against one, and internally only ever trades out of the stall’s own half. All three explain themselves when they refuse. A hole that cannot exist still beats one that has to be defended.
Can staff look inside a player’s stall?
No. The container never opens for anybody but the owner — not for staff, not for an administrator browsing a market. The block is the shop front and /stall is the back office, so an administrator manages somebody else’s stall through the command. Making a staff permission silently change what a right-click does is how staff members accidentally open twenty shops while shopping.
What happens if a shop’s barrel is removed by a world edit?
Nothing breaks — nobody can trade at a stall whose block is gone — but it clutters /market, so /marketstalls prune sweeps them. It is manual on purpose: doing it automatically means a plugin that deletes shops on its own schedule. It also only examines worlds that are actually loaded, because an unloaded world’s stalls are not orphans, they are out of sight.
Does it need Vault?
Yes, plus an economy plugin behind it, and MarketStalls refuses to enable without them rather than starting anyway. A shop plugin with no money in it can only produce shops that turn every customer away, and the owner finds that out from their players. The log says which of the two is missing.
Why does /market not just teleport me there?
Because once nobody has to go to the shops, the market district stops being a place: the plots people built are decoration and a stall at spawn is worth exactly as much as one in a hole at y=-40. You get coordinates, a distance and a bearing. If you want the convenience on your server, add a warp — that is your call about your economy rather than one this plugin makes for you by default.