SecureTrade
SecureTrade is a safe player-to-player trading plugin for Paper 1.21+. Players can exchange items and optionally money through a shared trading GUI with confirmation protection, automatic cancellation and trade history.
Features
- Shared trading GUI
- 16 item slots for each player
- Optional money trading with Vault
- Two-sided confirmation system
- Final countdown before completing a trade
- Confirmations reset whenever an offer changes
- Items are returned if a trade is cancelled
- Request timeouts and cooldowns
- Configurable maximum trading distance
- Automatic cancellation when a player disconnects, closes the GUI, takes damage or moves too far away
- Inventory-space and balance checks
- SQLite trade history
- Admin history lookup
- Configurable messages and sounds
- Tab completion
- Bypass permissions for administrators
Requirements
- Paper 1.21 or newer
- Java 21
- Vault and a compatible economy plugin are optional
Vault is only required for money trading. Item trading works without Vault.
Installation
- Download the SecureTrade
.jarfile. - Place it inside your server's
pluginsfolder. - Install Vault and an economy plugin if you want to enable money trading.
- Start or restart the server.
- Edit
plugins/SecureTrade/config.ymlif required. - Use
/trade reloadafter changing the configuration.
How to Use
- Send a request using
/trade <player>. - The other player accepts it using
/trade accept. - Both players place their items into their own side of the trading GUI.
- Items can also be shift-clicked into the trade.
- Use
/trade money <amount>to include money in your offer. - Click your red confirmation block when your offer is ready.
- Once both players confirm, a short countdown begins.
- The items and money are exchanged when the countdown finishes.
Changing an item or money offer resets both confirmations. The gold ingots in the GUI display each player's current money offer, while the barrier cancels the trade.
Commands
/trade <player>— Send a trade request/trade accept [player]— Accept a trade request/trade deny [player]— Deny a trade request/trade money <amount>— Set your money offer/trade cancel— Cancel your current trade/trade history— View your recent trade history/trade history <player>— View another player's trade history/trade reload— Reload the configuration/securetrade— Alias for/trade
Permissions
securetrade.use— Use the trading system
Default: Everyonesecuretrade.money— Add money to a trade
Default: Everyonesecuretrade.history— View personal trade history
Default: Operatorssecuretrade.history.others— View another player's trade history
Default: Operatorssecuretrade.reload— Reload the plugin configuration
Default: Operatorssecuretrade.bypass.cooldown— Bypass the request cooldown
Default: Operatorssecuretrade.bypass.distance— Bypass the maximum trading distance
Default: Operators
Configuration
The following settings can be changed inside config.yml:
- Trade-request timeout
- Request cooldown
- Confirmation countdown
- Maximum trading distance
- Cancel trades when players take damage
- Enable or disable money trading
- Number of history entries displayed
- Plugin messages
- Sound effects
Trade History
Every completed trade is stored automatically in:
plugins/SecureTrade/trades.db
The database records both players, exchanged items, exchanged money and the completion time.
Default Safety Checks
A trade is cancelled if:
- A player closes the trade menu
- A player disconnects
- A player takes damage
- The players move too far apart
- A player does not have enough inventory space
- A player no longer has enough money
When a trade is cancelled, all offered items are safely returned to their owners.

