Skip to content
OrePlugins

ShopSigns

Player shops on a sign and a chest.

Product pagev1.0.01.21 through 1.26 · Java 21+

Installation

  1. 1Install Vault and an economy plugin if you do not have them. EssentialsX, CMI and most others register an economy with Vault automatically.
  2. 2Drop ShopSigns-1.0.0.jar into plugins/ and restart.
  3. 3Run /shopsigns. It says in one line whether the economy is connected and whether Bedrock forms are on.
  4. 4Nothing else needs setting up — trading and shop-keeping are granted to everyone by default.

Opening a shop

Place a chest. Put a sign on the front of it, or on top of it. Write four lines:

[shop]
64
B 500 : S 250
diamond

Line 1 makes it a shop. Line 2 is how many items one click moves, and blank means one. Line 3 is the prices. Line 4 is what is traded, and blank means the item in your hand.

The sign then rewrites itself into the form a customer reads: your name, the item, the two prices. A sign that is refused stays an ordinary sign you can fix or break — refusing to open a shop never destroys what somebody wrote.

What the prices mean

B is always what the customer pays you. S is always what you pay the customer. Either half can be left out.

B 500 alone is a shop that only sells. S 250 alone is a buying station — a way to turn your players’ surplus into money without stocking anything. B 500 : S 250 is both.

If S is higher than B on the same sign, anybody can stand there clicking alternately for free money. The plugin allows it, because a spread that looks wrong to a plugin is sometimes a deliberate loss-leader — but it is worth reading your own sign twice.

Prices outside limits.min-price and limits.max-price are refused when the sign is written, which is there to catch a slipped decimal point before it empties somebody’s balance rather than to set the market.

Buying and selling

Right-click the sign to buy. Sneak and right-click to sell. Left-click to read the shop — owner, item, prices, stock left and room left.

Swap the two actions with sign.swap-actions in config.yml. /shop help describes whichever is actually in effect, because the help text is generated from the setting rather than written out, so it cannot be wrong.

A shop’s owner gets a readout rather than a refusal when they click their own shop. They cannot trade with themselves, and "you own this shop" every time they walk past their own market is noise; the stock count is what they actually want.

Admin shops

Write [admin shop] instead of [shop], with the shopsigns.admin permission. The stock never runs out and the money is created and destroyed rather than moving to or from anybody.

It still needs a real chest behind it — the chest is what the sign is attached to — but nothing is ever taken out of it.

These are for a server store where the prices are the economy’s floor and ceiling. If you want those prices to move on their own, that is MarketPulse’s job, and the two sit side by side.

Protecting the shops

A shop is worth exactly what the guarantee is worth that the chest behind it will still be its owner’s in an hour. Every route below has been used to empty a shop chest on a live server, and each one is a separate switch under protect: in config.yml.

containers stops anyone but the owner opening the chest. Turn it off if a land-claim plugin already covers it, or a player gets two refusal messages for one click.

hoppers stops a hopper draining the chest. Insertion is always allowed regardless — pulling stock out of a shop is theft that needs no permission and leaves no trace, while feeding one is how every serious shopkeeper restocks from a farm.

explosions covers creepers and TNT, and also the block-source explosion a bed or a respawn anchor makes in the wrong dimension, which is a different Bukkit event that a plugin listening only for the entity one will miss entirely. Fire, endermen and withers are covered here too.

pistons stops a piston pushing a shop sign off its container. Worth keeping on: a piston move fires no break event at all, so the sign simply pops off as an item and the shop is left pointing at air.

Closing a shop

Break the sign, or look at it and run /shop remove. The chest is deliberately protected until the sign is gone, because breaking it first would scatter the stock and leave a sign advertising a shop with nothing behind it. The order is enforced and the message says so.

If a sign disappears some other way — a world edit, another plugin — the shop closes itself the next time anything touches its chest, and says so in the log. Without that, a chest could end up permanently unbreakable with nothing anywhere explaining why.

Limits, fees and permissions

shopsigns.use and shopsigns.create are granted to everyone by default. A shop plugin whose players cannot open shops until an operator grants two nodes looks broken on the day it is installed, and nothing in the log says otherwise.

The per-player cap is limits.shops-per-player, and you raise it per rank with shopsigns.limit.<number> — shopsigns.limit.50 on a donor rank. The highest granted number wins, and shopsigns.limit.unlimited removes the cap.

creation-cost charges a player when they open a shop, and is taken only once the shop provably exists — never before.

Every node is declared with a real default, because an undeclared node is op-only whatever your permissions plugin says about it, which reads exactly like a plugin that does not work.

Which command names reach ShopSigns

/shop is a name a lot of plugins want. ShopSigns never takes it from whatever already has it.

If it lost the name it says so at WARN in the console at startup, and /shopsigns commands answers what is actually true on your server. Trust that over any documentation, including this page.

The loser is always reachable namespaced: /shopsigns:shop.

Commands

ShopSigns commands and permissions
CommandWhat it doesPermission
/shopYour 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 infoRead the shop you are looking at: owner, prices, stock left, room left.shopsigns.use
/shop removeClose the shop you are looking at. Breaking the sign does the same thing.shopsigns.use
/shopsignsStatus: how many shops, how many trades, whether the economy is connected.shopsigns.manage
/shopsigns commandsWhich command names this plugin actually owns on your server.shopsigns.manage

Still stuck?

Post in Discord with your server version and the relevant part of the log. That is almost always enough to get a straight answer the same day.

Get help