Chest shops with no signs and no syntax
TalkShop turns any chest into a shop by talking in chat. No signs with an exact format, no commands to memorise: sneak, click, and the plugin asks you what it needs to know.
What it looks like
[CONFIRM] [ANOTHER AMOUNT] [CANCEL]
[TalkShop] You bought 1x Diamond for 100.00.
Installation
Two minutes. All you need is an economy plugin, which you almost certainly already have.
- Install Vault and an economyVault is the bridge between plugins and your server's money. EssentialsX, CMI or any other will do.
- Copy TalkShop-1.0.0.jar into the plugins folderWorks on both Spigot and Paper, 1.21 and up.
- Restart the serverDo not use /reload. It generates config.yml, the lang/ folder and the database.
- Check the consoleYou should see: TalkShop enabled. 0 shops ready.
Coming from another shop plugin?
If you had ChestShopIK, TalkShop finds its database on first start and imports every shop on its own, keeping owner, item and prices. Your old folder is left untouched.
Create a shop
Place a chest, put what you are selling inside, and hold one of that item in your hand.
- Sneak and left-click the chestWith the item in hand. That item is the one going on sale.
- Answer what kind of shop it isType buy, sell or both in chat.
- Type the priceIf you chose both, it asks for both: first what you pay, then what you charge.
> sell
[TalkShop] What price do you want to SELL this item for?
> 100
[TalkShop] Shop created!
The three types
| Type | What it does | Example |
|---|---|---|
sell | You sell to players. Stock leaves your chest, money enters your account. | You sell diamonds at 100 |
buy | You buy from players. Items enter your chest, money leaves your account. | You buy iron at 10 |
both | Both at once in the same chest. It lives off the margin between the two prices. | Buy at 8, sell at 12 |
cancel any time to bail out.What about a custom item?
It works the same. TalkShop stores the whole item: name, lore, enchantments and the internal markers other plugins such as ElementalArms or MMOItems attach to it. A legendary sword sells as that sword, with its texture and its name on the hologram. And if someone drops a fake copy without those markers into the chest, it does not count as stock.
Two shops on one double chest
A double chest can hold a shop on each half. With your shop already on one half, sneak and left-click the other half with the item in your hand, and answer the same questions. That way you can, for example, sell diamonds on one side and buy iron on the other.
Buying and selling
Two clicks for the customer. They never open the chest: items and money move on their own.
| Action | What happens |
|---|---|
| Left-click | You buy 1 |
| Sneak + left-click | You buy a full stack |
| Right-click | You sell 1 |
| Sneak + right-click | You sell a full stack |
| [OTRA CANTIDAD] | You type the exact number in chat |
| Type yes / no / amount | You confirm, cancel or pick another amount without pressing buttons |
Nothing moves until you confirm
Clicking shows an offer in chat with three buttons. Until you press [CONFIRM], nothing is charged and no item moves. Hover the message to see the item detail: name, enchantments and lore.
Can't press the buttons? Type yes, no or amount in chat. That is how Bedrock players buy, since they cannot click in chat, and it works the same on Java. With Floodgate, Bedrock players also get a window with the three buttons.
The offer expires after 30 seconds, and if the owner changes the price while it is open, it is voided. You will never buy at a price that no longer exists.
When something does not add up
| Situation | What happens |
|---|---|
| You have no money | A warning, and nothing else happens |
| Your inventory is full | Refused before charging. No item is lost on the way |
| The shop is out of stock | A warning to you, and one to the owner to restock |
| The chest is full when you sell | A warning to you, and one to the owner to empty it |
| The owner has no money | They cannot buy from you, and you keep your items |
Managing your shop
Your own shop behaves like an ordinary chest. You do not trade with yourself.
| Action | What it does |
|---|---|
| Right-click | Opens the chest to restock or empty it |
| Left-click | Breaks the chest. The shop is gone and the items drop |
/talkshop remove | Stops being a shop but keeps the chest and everything in it |
/talkshop setsell <precio> | Changes what you charge. 0 stops selling |
/talkshop setbuy <precio> | Changes what you pay. 0 stops buying |
Automatic warnings
A full or empty shop stops selling without you noticing. TalkShop warns you when a customer could not buy or sell because of it:
If you were offline, the warning waits for you and arrives when you log in, even if the server restarted in between. There is a minimum gap between warnings from the same shop so it never becomes spam.
Shared shops
A shop can be run by more than one person, and it can change hands. These are two different things: staff help out, the owner stays the owner.
Shop staff
Look at your shop and run /talkshop staff. A menu opens with the players who are online plus anyone who is already staff: one click adds them, another removes them. Current staff are shown in green and come first. The search sign lets you type part of a name in chat to find players who are offline too.
- 🟩 Already staff. These come first.
- 🧑 Online right now.
- 🪧 Search by name. Finds offline players too.
| Command | What it does |
|---|---|
/talkshop staff | Opens the staff menu for the shop you are looking at |
/talkshop staff add <jugador> | Makes an online player a member of staff |
/talkshop staff del <jugador> | Removes a member of staff. Works even if they are offline |
/talkshop staff list | Lists the staff of this shop |
/talkshop staff clear | Leaves the shop with no staff |
What a staff member may touch
The server owner decides, in config.yml, under staff. These are the defaults:
| Option | Allows | Default |
|---|---|---|
can-change-prices | Change the buy and sell prices | true |
can-manage-stock | Open the chest to restock or take stock out | true |
can-view-history | Read /talkshop history | true |
can-set-warehouse | Link or unlink the warehouse chest | false |
can-change-budget | Change the budget and the selling cap | false |
Giving a shop away
| Command | What it does |
|---|---|
/talkshop setowner <jugador> | Gives away the shop you are looking at |
/talkshop transfer <jugador> | Gives away all your shops at once |
/talkshop accept | Accepts the shops someone is offering you |
The player receiving them has to be online and say yes with /talkshop accept. Without that step, anyone could dump forty shops on you and leave you unable to build your own. The server owner can drop the confirmation with transfer.require-accept: false.
What travels with the shop
Economy tools
Since 1.1 the plugin writes down every sale. Three things come out of that: knowing what an item really sells for, capping what a buying shop spends, and clearing out the shops of players who stopped playing.
Market average price
/talkshop price with the item in hand, while looking at a shop, or by name: /talkshop price DIAMOND. It answers what it has actually been selling for over the last 30 days.
Buying budget
A shop that buys can drain your account while you sleep. With /talkshop budget 50000, while looking at your shop, you cap it: the amount goes down as people sell to you and, once spent, the shop stops buying on its own without you touching prices. Remove it with /talkshop budget off.
You get two warnings: when it is running low and when it is spent. If you were offline, they wait for you and arrive when you log in.
The hologram shows Can pay next to Room left, so both limits are visible at a glance: how much fits and how much is left to spend. Both update the moment somebody sells to it.
Sell limit
/talkshop selllimit 5000 caps how much the shop may sell. When it runs out the shop stops selling on its own, without you touching prices — the same way a spent budget stops it buying.
The allowance refills on its own after a while (sell-budget.reset-hours, 24 hours by default). That is deliberate: a limit that simply runs out leaves the shop dead for good the moment it is reached. If you do want a one-off allowance, set it to 0.
The hologram shows Can sell, and the owner is warned at 10% left and again when it runs out.
Sales history
/talkshop history while looking at your shop shows the last sales with date, amount and price. Useful to see what moves and what has not sold in weeks. Staff can read anyone's with talkshop.admin.history, which is what you need when two players argue over a sale.
Expiry for inactivity
Optional and off by default. Turn it on and the shops of anyone who has not logged in for 60 days are removed on their own, so a server with years behind it does not end up covered in dead chests. Admin shops never expire.
Shop finder
/shopsearch opens a menu with everything on sale across the server, cheapest first.
- Each item appears once, with the cheapest offer first
- Click one to see who sells it, at what price and the coordinates
- The sign button filters by name: type
diamondand you only see those - Custom items are shown as they are, with their texture, name and lore
Getting there
Clicking a shop in the results teleports the player to it: they arrive next to the chest and facing it, never inside a block. If there is no safe gap around it they are told, instead of being left buried in stone.
talkshop.teleport, and nobody has it by default. Players without it still see the shop, its price and its coordinates, and the lore tells them what they are missing — so they know the feature exists. Keep it as a rank perk, or hand it to everyone with lp group default permission set talkshop.teleport true to make your market move faster. The wording lives in gui.results.tp-denied and teleport.no-permission in your language file, and the whole thing switches off with teleport.enabled in the config.Protections
A shop is a chest full of valuables with its owner's name floating above it. Here is how people try to rob one, and why none of it works.
| The attempt | What happens |
|---|---|
| Open the chest | It does not open. Right-click trades, never opens |
| Break the chest | Only the owner and staff |
| Break the other half of a double chest | Blocked. The free half protects the shop next to it |
| Place a chest alongside to merge them | It will not let you place it |
| Put a hopper underneath | It pulls nothing out |
| Blow it up with TNT or a creeper | The chest survives the blast |
The last two can be switched off in the config if your server prefers otherwise.
Regions
Before a shop is created, the plugin checks the player may actually touch that chest. It asks the other plugins rather than integrating with each one, so GriefPrevention, Towny, Factions, Lands, WorldGuard and anything else that guards land are covered by the same check — including plugins that do not exist yet. None of them is required.
Commands
Aliases for /talkshop: /tshop and /ts. Everything has Tab completion.
| Command | What it does | Who |
|---|---|---|
/talkshop | Help | Everyone |
/shopsearch | Opens the shop finder | Everyone |
/talkshop setsell <p> | Changes the sell price | Owner |
/talkshop setbuy <p> | Changes the buy price | Owner |
/talkshop remove | Removes the shop, keeps the chest | Owner |
/talkshop toggleadmin | Admin shop with infinite stock | Admin |
/talkshop cleanup | Removes nearby orphan holograms | Admin |
/talkshop test | Use your own shops as a customer | Admin |
/talkshop reload | Reloads config and languages, and refreshes holograms | Admin |
/talkshop budget <n|off> | Caps how much the shop will spend buying | Owner |
/talkshop selllimit <cantidad|off> | Caps how much your shop may sell | Owner |
/talkshop price [objeto] | What an item has actually been selling for | Everyone |
/talkshop history | Last sales of the shop you are looking at | Owner |
/talkshop staff | Staff menu for the shop | Owner |
/talkshop setowner <jugador> | Gives away the shop you are looking at | Owner |
/talkshop transfer <jugador> | Gives away all your shops | Owner |
/talkshop accept | Accepts a transfer | Everyone |
Permissions
| Permission | What it grants | Default |
|---|---|---|
talkshop.command.create | Create shops | everyone |
talkshop.command.search | Use the finder | everyone |
talkshop.command.setbuy | Change their buy price | everyone |
talkshop.command.setsell | Change their sell price | everyone |
talkshop.limit.<n> | Shop limit for that rank | — |
talkshop.admin.* | Everything admin | op |
talkshop.command.budget | Set a budget on their own shop | Everyone |
talkshop.command.price | Look up the market average price | Everyone |
talkshop.admin.history | Read any shop history, not just their own | OP |
talkshop.teleport | Teleport to a shop from the finder | Nobody |
talkshop.command.staff | Name staff on your own shops | true |
talkshop.command.transfer | Give your shops to another player | true |
talkshop.limit.5 for regular players and talkshop.limit.50 for VIPs, and each gets their cap. The highest number a player holds always wins.Configuration
Everything lives in plugins/TalkShop/config.yml. The comments in that file are lost on update, which is why every key is explained here.
Shops
shop:
max-per-player: 0
creation-cost: 0.0
creation-timeout-seconds: 60
confirmation-timeout-seconds: 30
protect-from-hoppers: true
protect-from-explosions: true
notify-owner: true
notify-cooldown-minutes: 10
notify-keep-days: 14| Key | Default | What it does |
|---|---|---|
max-per-player | 0 | Shops per player. 0 = unlimited |
creation-cost | 0.0 | What creating a shop costs |
creation-timeout-seconds | 60 | Time to answer before it cancels |
confirmation-timeout-seconds | 30 | How long an offer stays valid |
protect-from-hoppers | true | Stops hoppers from draining shops |
protect-from-explosions | true | Shop chests survive explosions |
notify-owner | true | Warn the owner when it fills up or empties |
notify-cooldown-minutes | 10 | Minimum gap between warnings from one shop |
notify-keep-days | 14 | How long warnings wait for an offline owner |
Sell limit
ArrayThe limit itself is set per shop by its owner with /talkshop selllimit; this only decides how often it refills. The hologram line is turned on and off with display.show-sell-limit.
Holograms
display:
enabled: true
show-item-name: true
show-owner: true
show-stock: true
show-space: true
show-budget: true
show-sell-limit: true
background-opacity: 0
price-decimals: 2
view-range: 0.8
text-scale: 1.0
item-scale: 0.6
line-width: 220
height-offset: 0.0| Key | Default | What it does |
|---|---|---|
text-scale | 1.0 | Text size. 1.0 is normal |
item-scale | 0.6 | Size of the item floating on top |
line-width | 220 | How wide a line can get before it wraps |
height-offset | 0.0 | Moves the whole hologram up (+) or down (-), in blocks |
/talkshop reload, including holograms already in the world.Bedrock players
bedrock:
forms: true
floating-item: auto
detect-by-uuid: true| Key | Default | What it does |
|---|---|---|
forms | true | The native confirm window. Needs Floodgate on this server |
floating-item | auto | The floating item for Bedrock. auto when Geyser or Floodgate is here, true always (Geyser on the proxy), false never |
detect-by-uuid | true | Recognises Bedrock players by their Floodgate UUID when Geyser and Floodgate are not here |
floating-item: false.Database and language
language: "es"
database:
type: "sqlite"
mysql:
host: "localhost"
port: 3306
database: "talkshop"
username: "root"
password: ""Bundled languages: es, en, fr, zh. SQLite is a file inside the plugin folder and needs no setup; MySQL is only needed to share shops between several servers.
lang/ however you like. Your changes are not overwritten when the plugin updates: only new keys get added.Frequently asked questions
Does it work on Spigot or only Paper?
Both, 1.21 and up. The same file.
Does it work with Bedrock players (Geyser)?
Yes, with the same file. They create shops by talking just like on Java, confirm by typing yes / no (or in a window, with Floodgate) and see each shop's item. See Configuration → Bedrock players.
Does the buyer take the items out of the chest?
No. They go straight to their inventory on confirm. They never open the chest — if they could, they would take everything without paying.
Can I test my own shops alone on the server?
Yes, with /talkshop test. It is forgotten on disconnect, so it never stays on by accident.
Does it work with items from other plugins?
Yes. The whole item is stored with its internal markers, so fake copies do not count as stock.
How many shops can it handle?
They all live in memory and saves happen in the background, so clicking a chest never touches the disk, even with thousands of shops.
Version history
Every release and what changed in it.
- 🐛Heavy lag on servers with hoppers: every hopper move made TalkShop copy the whole chest, contents included, several times. A full double chest cost about 7 ms per move. Now it is about 0.0005 ms.
- 🐛The same chest copying is gone from clicking blocks, closing chests, counting hologram stock and buying, so all of those are lighter too.
- 🐛A warehouse that is a barrel (or any container other than a chest) could be emptied with a hopper. It is now protected like chest warehouses.
- 🔧Just replace the jar and restart. Nothing changes in config.yml or the database.
- 🐛Shops in a protected area (WorldGuard chest-access, GuardianStones, land claims) let players buy but not sell: the right-click was blocked with "you can't open that here". Fixed.
- 🔧The chest itself stays protected: customers only get the offer, and owners still go through the protection as always. New option shop.trade-in-protected-areas; false brings back the old behaviour.
- 🔧Just replace the jar and restart. The new option is added to your config.yml on its own.
- ✨Bedrock players (Geyser) can now buy and sell: they type yes, no or amount in chat instead of clicking the buttons. It works for Java players too.
- ✨With Floodgate installed, Bedrock players get a native window with Confirm, Other amount and Cancel.
- ✨Bedrock players now see the item over each shop: a classic floating item only they can see. It can't be picked up, never despawns and only exists while a Bedrock player is online.
- 🔧The purchase prompt now says the answer can be typed, for anyone whose chat does not allow clicking.
- 🔧Just replace the jar. Geyser and Floodgate are optional: without them nothing changes. The new 'bedrock' options and messages are added to your config and language files on their own.
- ✨**Two shops on one double chest.** The owner can place a second shop on the free half (sneak + left-click with the item). Both shops share the chest's inventory. Other players still buy a stack from t
- ✨**Configurable hologram size.** New options under `display`: `text-scale`, `item-scale`, `line-width` and `height-offset`. The item places itself above the text, so the two never overlap.
- ✨**`/talkshop reload` now refreshes existing holograms.** Size, height and background changes show up right away. Turning `display.enabled` off removes them.
- 🐛Breaking the empty half of a double chest no longer deletes the shop on the other half.
- 🐛Shops created on Paper can now be read on Spigot: items are saved in a format both servers understand. Existing shops keep their data exactly as it was.
- 🐛If a shop can't be read at startup, the console now lists it with its coordinates. Creating a new shop on that chest replaces it, instead of failing with "UNIQUE constraint failed" and vanishing on re
- 🐛Sneak + left-clicking your own warehouse no longer unlinks it. A chest that is a shop's warehouse can no longer be turned into a shop.
- 🐛Transferring a shop that shares a double chest with another one now transfers both, so the new owner can't take the other shop's stock.
- 🐛TalkShop disabled itself at startup on servers that DO have an economy, if the economy plugin registered itself after TalkShop had already started. It now waits for the economy instead of giving up.
- 🔧Just replace the jar. If no economy ever registers, TalkShop still disables itself as before, only one tick later.
- 🐛A shop can no longer pay more than it charges: buying a stack and selling it straight back was guaranteed profit, and on an admin shop it never ran out.
- 🐛The check also reads the price the shop already had, which is how one got inverted by accident when only one side was changed.
- 🐛Shops created with the "both" answer are covered too: the sell price is asked after the buy price and could invert the shop before it existed.
- ✨New shop.allow-inverted-prices option, off by default, for anyone who wants inverted shops on purpose (a subsidy, an event).
- ✨On startup the console lists the shops that were already inverted, with owner, world, coordinates and both prices. None are changed: you fix them yourself.
- ✨The refusal message says what the shop would pay and what it would charge, in all four languages.
- 🔧Creating a shop no longer throws away what you typed: a price that would invert it asks again at the same step.
- ✨Shop staff. A shop owner can name other players to help run the shop, without giving it away. Look at your shop and use /talkshop staff, or staff add, del, list and clear.
- ✨Staff menu. /talkshop staff opens a menu with the players who are online plus anyone who is already staff. One click adds them, another removes them. Current staff show in green and come first.
- ✨Player search. The sign in the menu lets you type part of a name in chat, and it finds players who are offline too.
- ✨Per-action staff permissions. You decide in config.yml what staff may touch: prices, stock, history, warehouse and budget, each on its own switch. The two that move money are off by default.
- ✨Shop transfer. /talkshop setowner <player> gives away the shop you are looking at, and /talkshop transfer <player> gives away every shop you own. The receiver takes them with /talkshop accept.
- 🐛Shops could be created on chests inside other players' claims. TalkShop only asked WorldGuard, so on servers running GriefPrevention, Towny, Factions or Lands a player could claim-jump and turn someon
- ✨Sell limit — /talkshop selllimit <amount|off> caps how much a shop may sell. It refills on a period (24h by default) rather than running out for good, so a shop never goes permanently dead. Most shops
- 🔧budget, price and history now appear in tab completion. They always worked, but the tab list never offered them, so they looked like they did not exist.
- ✨Sales tax — a cut the server keeps from every sale. Whoever receives the money pays it, so the buyer never pays more than the hologram says. It can leave the economy as a sink or go into an account, a
- ✨Linked warehouse — link a second chest with /talkshop warehouse and it restocks the shop on its own. The hologram shows both amounts: Stock: 40 (8 + 32 in reserve). Shops die from refill fatigue, not
- 🔧Hologram background off by default, adjustable 0–255. In markets with shops close together the dark boxes covered the holograms behind them. Set display.background-opacity: 80 for the old look.
- 🐛Shops whose chest no longer exists left a hologram floating over nothing. They are now cleared away when their chunk loads.
- 🐛The shop finder opened an empty screen when clicking an item from another plugin. It was rebuilt to be compared and did not always come back identical; it is no longer rebuilt at all.
- ✨Market average price: /talkshop price tells you what an item has really been selling for over the last 30 days. Admin shops are excluded so they cannot skew it.
- ✨Buying budget: /talkshop budget 50000 caps what a shop spends buying from players. It stops buying on its own when spent, and warns you before and after.
- ✨Sales history: /talkshop history shows a shop's last sales with date, amount and price. Staff can read anyone's with talkshop.admin.history.
- ✨Teleport from the shop finder: click a shop in /shopsearch to be taken to it. Needs the talkshop.teleport permission, so it works as a rank perk.
- ✨Shop expiry, optional and off by default: shops of players who have not logged in for 60 days can be removed automatically.
- 🔧Buy shops now show "Can pay" next to "Room left", so the space in the chest and the money available are both visible on the hologram.
- 🔧config.yml updates itself: new options land in your file with their documentation, and your settings are kept.
- 🔧All four language files are created and kept up to date, not just the active one. Switching language no longer gives you an outdated file.
- 🔧/talkshop lists every command and shows the plugin version and author.
No notes for this version.
Discussion
Comment and share your experience on each plugin version.
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
Player reviews
What server owners think of this plugin.
El plugin esta genial! att: infinity3113 :P