Chestly v1.2

Sell what's inside. Not what's on the sign. A physical container shop

Chestly



Chestly
Sell what's inside. Not what's on the sign. A physical container shop plugin for Paper.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Dynamic Stock Atomic Transactions Two-Way Trading Paper 1.21 API + Events GUI Setup

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


What Chestly Solves

Most sign shops make you write item codes and [Buy] tags on the sign. Chestly does it differently. You link a physical container (chest, trapped chest, barrel, or copper chest) to a sign, give the shop a name and a price, and the container itself becomes the stock. The sign is just a presentation layer that Chestly renders for you.

The container inventory is the source of truth. Put a nether star in the chest and it is for sale. Take it out and it stops being for sale. Nothing is cached at link time, so you never edit a sign to change what is sold.

Every purchase is serialized per shop, validated against the live inventory, and rolled back on any failure. No item duplication, no double charges, no partial purchases.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Purchase Modes. Every Shop Independent.

Each shop picks its own buy mode, quantity, currency, sign style, and trade mode. Nothing is shared, so one shop can sell bundles while the next sells a single item.

Buy Modes
  • ANY Buys the configured quantity of the first stocked item.
  • CHOOSE Opens a clear buyer menu with live stock and prices.
  • RANDOM Buys a random stocked item.
  • BUNDLE Buys one of every item type in the container.


Trade Modes
  • SELL Players buy from the shop. Right-click the sign.
  • BUY The shop buys from players. Set a buy price and it pays the owner's balance.
  • BOTH Right-click to buy, left-click to sell to the shop.


Sign Presentation
  • Three sign styles (default, classic, minimal) with configurable line templates and hex colors.
  • Owners recolor the sign text with a vanilla dye, or reset it with a water bucket.
  • Optional item-price holograms built from Display Entities, rebuilt safely on restart.


Currencies
  • Vault economy by default, plus item currency (for example 5 diamonds).
  • External plugins register their own currencies through the API.
  • Offline owners are paid into the container for item-currency sales, so no stock is lost.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Core Systems


Dynamic Stock
  • The container is the source of truth. Add an item and it is for sale; remove it and it is not.
  • No item codes on signs and no [Buy] syntax.


Atomic Transactions
  • Per-shop locking serializes every purchase.
  • Every mutation is rollback-aware, so a failure leaves the player whole.
  • A journal records interrupted transactions, and /chestly check reports or clears them.


Economy Controls
  • Configurable sales tax withheld before the owner is paid.
  • Per-player purchase limits, global or per shop, tracked persistently.
  • Optional confirmation click for expensive purchases.


Protections
  • Hoppers and hopper minecarts cannot drain or flood shop containers.
  • Anti-spam cooldown between purchases by the same player.
  • Per-world enable and disable, with blacklist or whitelist.


Notifications and Stats
  • Owners are told once when a shop runs out of stock, and again when it restocks.
  • Online owners are messaged on every completed sale, with income in green.
  • Per-shop stats: items sold, total revenue, last sale time.
  • PlaceholderAPI placeholders for the shop you are looking at.


Developer API
  • Create, delete, and query shops programmatically.
  • Register currencies, selection strategies, container adapters, and protection providers.
  • Listen to shop and purchase events, cancellable before a purchase.


Multi-Language Support
  • Built-in English and Polish, extensible by dropping a file in /lang/.
  • All player-facing text lives in language files and supports hex colors.
  • The language is a single line in config.yml.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


How Chestly Compares




 

Feature Chestly Manual / Sign-Item Plugins
Stock Live from the container, nothing cached Fixed codes on the sign, must be edited
Transactions Atomic, per-shop lock, full rollback Charge or dupes on interrupts
Buy modes ANY, CHOOSE, RANDOM, BUNDLE Buy one, fixed amount
Two-way selling SELL, BUY, BOTH with a buy price No sell-to-shop
Signs Styles, templates, vanilla dyeing, hex Plain lines, [Buy] tag required
Protections Hopper lock, cooldown, world scope, confirm None
API & events Public API, currencies, adapters, events No API surface







━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Who This Is For


  • Survival and SMP servers Players open a shop by filling a chest and linking a sign. No staff time writing item codes, no confusion over what is for sale.
  • Economy-driven servers Sell and buy with Vault money or item currency, apply sales tax, and cap purchase limits.
  • PvP and faction servers Expensive items can ask for a confirmation click, and an anti-spam cooldown stops rapid-fire purchases.
  • Network owners Drop Chestly into any Paper 1.21 server. Per-world control, /chestly reload, and a SQLite database that needs no setup.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Technical Specs




 

Server Paper 1.21+, Java 21
Storage SQLite, resolved automatically by Paper
Dependencies None required to run (Vault and PlaceholderAPI optional)
Soft dependencies Vault, PlaceholderAPI
Languages en_US, pl_PL (extensible)
Containers Chest, trapped chest, barrel, copper chest (incl. waxed/oxidized)
Forward compatibility UUID-based lookups, reflection-safe features degrade gracefully






Commands





 

Command Description Permission
/chestly create Opens the GUI-guided shop setup menu chestly.create
/chestly list Lists your shops (name, price, status) chestly.edit
/chestly edit Opens the editor for the shop you are looking at chestly.edit
/chestly price Sets the price of the shop you are looking at chestly.edit
/chestly name Renames the shop you are looking at chestly.edit
/chestly delete Deletes a shop (confirmation required) chestly.delete
/chestly info Shows shop information chestly.use
/chestly reload Reloads configuration chestly.reload
/chestly check Reports or clears interrupted transactions chestly.admin






Permissions





 

Permission Description Default
chestly.use Use Chestly shops true
chestly.create Create shops true
chestly.edit Edit own shops true
chestly.delete Delete own shops true
chestly.reload Reload configuration op
chestly.admin Administer any shop op





━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Get Chestly

Sign-based shops should be simple. Link a chest to a sign, set a price, and let the container do the rest.

Dynamic stock. Atomic transactions. Two-way trading. One plugin.

Drop it in your plugins folder. It just works.

Questions? Open an issue on GitHub. Feature requests are reviewed.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Product Info
Statistics
17

Views

0

Purchases

0

Downloads

204.20 KB

File size

28.08.2026

Published

03.09.2026

Updated

Info
Supported software
Supported Versions
1.21 - 26.2
Share & Earn

Share and earn part of the profits, an estimated €0.4 per product sale.

Log in to get your link
Product Image
Chestly
Chestly