ShopSigns
AvailableA chest, a sign, four lines — and your players run the economy instead of buying from the server. The chest is the stock, so nothing can drift out of step with the world, and every trade is written to a ledger that answers where the money went.
- Economy & Shops
- Player Utilities
- player shops
- chest shops
- signs
- vault
- bedrock
What it does
The chest is the stock
There is no virtual inventory to keep in step with the world. What is in the box is what is for sale, restocking is walking over and putting things in, and a hopper from a farm can do it for you. Nothing can drift, because there is nothing to drift from — and a shop that has run out says so instead of selling air.
Goods and money move together, or neither moves
No transaction spans a Bukkit inventory and an economy plugin, so every step is ordered so that each failure has an undo — and each one is written out rather than assumed unreachable. A chest that empties between the check and the sale, a customer who goes broke on the same tick, an economy plugin that refuses a deposit: every one of them rolls back whole.
One click is one payment
A right-click fires Bukkit’s interact event twice, once per hand. A shop plugin that does not filter that charges twice for one click, and the customer is robbed by a shop that looks like it worked. The bot suite asserts the balance delta against the exact advertised price, because "did the balance move" passes either way.
Where did my money go
/shop log lists what sold, to whom, for how much and when — and /shop purchases does the same from the other side. The ledger is written after the goods and the money have both moved, never before, so it records what happened rather than what was attempted. Most sign-shop plugins cannot answer this question at all.
Protection that covers the routes people actually use
Breaking the sign or the chest, creepers and TNT, the block-source explosion a bed makes in the Nether (a different event most plugins miss), a piston pushing the sign off with no break event at all, fire, endermen, and a hopper draining the chest. Insertion stays allowed, because that is how a shopkeeper restocks from a farm.
Sell what no item name can describe
Leave the last line blank and the shop stores the exact stack in your hand — enchantments, custom name, potion, everything. It then trades that item and only that item, so a plain diamond sword will not satisfy a shop selling a named one. It is also the route players reach for first, because it needs no typing.
Compatibility
- Storage
- SQLite (shops.db), WAL, fetched by Paper on first start
- Economy
- Vault — required, not optional
- Containers
- Chest, trapped chest, barrel. Double chests count as one
- Money
- Held as integer cents end to end, never as a double
- Hot path
- Shops are held in memory — a click on a sign is not a query
- Bedrock
- Native forms for /shop when Floodgate is present
Commands
Permissions default to true for player commands and op for admin ones.
| Command | What it does | Permission |
|---|---|---|
/shop | Your shops, your earnings and the help page, as a menu. A form on Bedrock. | shopsigns.use (everyone) |
/shop list [page] | Every shop you own, with what it trades and where it is. | shopsigns.use |
/shop log [page] · /shop purchases [page] | What has sold, and what you have bought. Both with names, amounts and times. | shopsigns.use |
/shop info | Read the shop you are looking at: owner, prices, stock left, room left. | shopsigns.use |
/shop remove | Close the shop you are looking at. Breaking the sign does the same thing. | shopsigns.use |
/shopsigns | Status: how many shops, how many trades, whether the economy is connected. | shopsigns.manage |
/shopsigns commands | Which command names this plugin actually owns on your server. | shopsigns.manage |
Before you buy
How is this different from MarketPulse?
MarketPulse is the server’s shop — you set what it stocks and its prices move with supply and demand. ShopSigns is your players’ shops: they build them, they set the prices, they keep the money, and the stock is whatever they put in the chest. Most servers want both, and they do not overlap: one is the economy’s floor and ceiling, the other is the market in between.
Do I need Vault?
Yes, and this is the only OrePlugins plugin where a dependency is required rather than optional. A chat game with no economy still plays; a shop with no economy is a sign that takes a player’s diamonds and hands back nothing. If Vault or an economy provider is missing the plugin refuses to start and the log says which one.
Can somebody empty a shop chest with a hopper?
No. Hoppers pulling out of a shop container are blocked; hoppers feeding one are always allowed, whatever the config says. There is no way to know who placed a hopper, so the two directions are treated differently rather than gated on identity — pulling stock out is theft that leaves no trace, feeding a shop is how a shopkeeper restocks from a farm.
What happens if the customer’s inventory fills up mid-purchase?
The overflow drops at their feet and they are told so. Dropping is not a failure to avoid here — the alternative is deleting items somebody has already paid for. The same reasoning runs the other way: a sale into a chest that filled up between the check and the move is rolled back whole and the items go back to the seller.
How many shops can one player have?
Twenty-five by default, and you raise it per rank with a permission node — shopsigns.limit.50 on a donor rank, for instance. The highest granted number wins, so stacking ranks behaves the way anyone would expect rather than depending on the iteration order of a permission set.
I already run a chest-shop plugin. Will they fight over /shop?
ShopSigns never takes a command name from another plugin — quietly rerouting half of a server’s shop workflow is the kind of help nobody asked for. If something else owns /shop it keeps it, the console says so at startup, and /shopsigns commands tells you what is actually true on your server months later. This plugin is always reachable as /shopsigns:shop.
Does it work on Bedrock?
Sign shops work with nothing installed — sneak and tap is the sell action there too. With Floodgate present, /shop opens a native Cumulus form instead of a chest menu, because a player on a phone has no tab-complete and a chat box that covers the screen.