Players can buy and sell exact items through physical single chests, trapped chests and barrels. Shops use Donsup money and show a native Minecraft confirmation with an item preview, quantity and total price. This module is included in the current development preview.
Create a shop
- Place a fresh single chest or barrel yourself. The plugin records who placed it. Existing unrecorded containers require an administrator to register them.
- Hold one example of the item you want to trade. Names, enchantments, damage, custom data and container contents form part of the exact match. The sample stays in your hand.
- Look at your container from within five blocks. Use
/chestshop create sell 16 100to sell batches of 16 items for $100 total, or/chestshop create buy 16 100to pay other players $100 for each batch of 16. - Open your container to add sale stock or collect purchased items. Buy shops draw money from your Donsup balance. Owners can receive sale proceeds while offline.
Amounts must be whole numbers from 1 to 2304. Prices must be $0.01 to $1,000,000,000 with at most two decimal places. Defaults permit 20 shops per regular player. Administrators can create additional shops and register pre-existing containers. Double chests, sign-based setup, holographic labels, remote purchases and automatic teleport-to-shop listings are not included in this version.
Trade
Right-click another player's shop to inspect the item preview and confirm one complete batch. No money or stock changes merely from opening the dialog. Stock, exact item properties, both inventories, the payer's balance and the shop's current price/status are checked again when confirming. A full inventory or short stock rejects the whole batch. Shops do not fill auction orders automatically.
Changing the price, pausing/removing the shop, moving more than six blocks from its centre or entering combat/a duel invalidates the pending trade. Replayed or another player's dialog callbacks do not authorize a purchase. An owner currently editing stock must close the container before a trade can proceed.
Commands
| Command | Behavior |
|---|---|
/chestshop or /cshop |
Native help menu |
/chestshop create <buy|sell> <amount> <price> |
Create from the held item and targeted container |
/chestshop list |
List your shops and locations |
/chestshop info |
Inspect the targeted shop |
/chestshop stock |
Owner/admin access to the targeted shop's inventory |
/chestshop price <price> |
Change the total price per batch |
/chestshop pause / /chestshop resume |
Stop or resume trading |
/chestshop remove [shopId] |
Unregister a shop; its physical stock stays put |
/chestshop history |
Show your ten newest retained trades |
/chestshop resolve <shopId> acknowledge |
Admin only: acknowledge interrupted trades after manual audit |
Player commands require donsup.use; editing requires ownership or donsup.admin. Administrators can buy from another owner with a normal right click and can use /chestshop stock to inspect/manage stock. Owners open their own inventory normally.
Protection and configuration
Only an owner or administrator can directly access a registered shop's stock. Hoppers/droppers cannot move stock into or out of shops. The Sell Axe cannot liquidate shop containers. Registered containers cannot be broken until the shop is removed, are excluded from explosion block lists, and reject merging with adjacent newly placed chests. Protection remains while trading is disabled. Administrative world-editing commands and third-party plugins that directly rewrite inventories can bypass Bukkit events; these integrations require separate qualification.
chest-shops:
enabled: true
max-per-player: 20
Run /donsup reload after changing configuration. Disabling trading leaves existing stock/ownership protections and removal tools available. Shop identities, trade state and recent history live in chest-shops.yml; pending payment receipts are stored with balances in players.yml. Physical stock remains in Minecraft world data. Back up all of them together.
Interrupted trades
Each trade first saves a prepared record. Payment saves both balances with a receipt in one file replacement. The plugin then saves a separate delivering state with before/after inventory snapshots before moving physical items. On startup, new prepared records are cancelled and any committed payment is refunded once, provided the refund can be funded. Delivering records and older ambiguous records stay locked for staff review. Up to 500 resolved records are retained, plus every unresolved record. The matching shop-payments receipt identifies a committed payment; staff must not blindly repeat or refund it. See the recovery protocol.
Staff should inspect the record, payer/payee balances, the payment receipt, and actual player/container items (for example through administrator data-inspection commands or an offline backup). Make any necessary correction deliberately, then use resolve ... acknowledge. That command unlocks the shop and removes the pending payment receipt; it does not transfer or refund anything.
This is not a durable transaction spanning Minecraft world saves and plugin files. Even a completed record may outlive a world save on abrupt power loss. Normal restart tests cannot prove hard-crash safety. Coordinated inventory recovery, protection-plugin compatibility and load testing remain unfinished.