Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Links
Tags
Creators
Details
Licensed GPL-3.0-only
Published 19 hours ago
Updated 3 weeks ago
ServerTrades
Safe, direct player-to-player item trading for Paper/Purpur 1.21.x. One player runs /trade <player>, the other accepts, and both open a shared trade GUI where they place items, confirm, and swap atomically.
ServerTrades is built around dupe-safety: every trade click is cancelled and item movement is handled manually, so items live in the trade session — never on the cursor — and are delivered or returned exactly once.
Features
- Request flow —
/trade <player>sends a request; the target accepts or denies. Configurable request timeout and cooldown. - Dual-confirmation GUI — both players place up to a configurable number of items, mark ready, and a countdown runs before the atomic swap.
- Trade chat — a private per-trade chat channel toggled in-GUI or via
/trade chat. - Item blacklist — block trades by material and, optionally, by lore patterns (e.g. "Soulbound", "Untradeable").
- Requests toggle — players can turn incoming trade requests off with
/trade toggle. - Background timeout — if a player closes the trade GUI, a timer (with reopen support) protects the session before it auto-cancels.
- Interrupted-trade persistence — items from trades interrupted by a crash/quit are stored to disk and returned safely.
- Optional CombatLOG integration — block or cancel trades while players are PvP-tagged (skipped if CombatLOG is absent).
- Optional PlayerSettings integration — per-player language.
- Configurable distance limit, sounds, and MiniMessage-styled GUI.
Commands
| Command | Description | Permission |
|---|---|---|
/trade <player> (alias: /t) |
Send a trade request to a player | servertrades.use |
/trade |
Reopen the trade GUI if you have an active trade | servertrades.use |
/trade accept |
Accept an incoming trade request | servertrades.use |
/trade deny |
Deny an incoming trade request | servertrades.use |
/trade cancel |
Cancel your active trade or outgoing request | servertrades.use |
/trade toggle |
Toggle whether you receive trade requests | servertrades.use |
/trade chat |
Toggle the private trade chat for the active trade | servertrades.use |
/trade reload |
Reload configuration and language | servertrades.admin |
Permissions
| Node | Description | Default |
|---|---|---|
servertrades.use |
Use /trade and its subcommands |
true |
servertrades.admin |
Access admin commands (e.g. /trade reload) |
op |
Configuration
Key sections of config.yml:
trade:
request-timeout: 60
request-cooldown: 10
accept-countdown: 5
max-distance: -1 # -1 = unlimited range
cancel-on-damage: false
cancel-on-move: false
background-timeout-seconds: 120
max-items-per-trade: 8
blacklisted-items:
- BEDROCK
- COMMAND_BLOCK
- BARRIER
- STRUCTURE_BLOCK
- SPAWNER
blacklist-by-lore:
enabled: false
patterns:
- "Soulbound"
- "Untradeable"
combat:
# Requires CombatLOG; checks are skipped if it is not installed.
block-in-combat: true
cancel-on-combat: true
persist-interrupted-trades: true
log-trades: true
The full file also covers the GUI title/materials/status text and the complete sound set.
Installation
- Requires Paper or Purpur 1.21.x and Java 21.
- Drop
ServerTrades-1.0.0.jarinto your server'splugins/folder. - Start the server to generate
config.yml, then adjust timeouts, item limits, and blacklists. - (Optional) Install CombatLOG to gate trading during PvP, and/or PlayerSettings for per-player language.
Dependencies
- None required. CombatLOG and PlayerSettings are optional, detected at runtime.
Support / Source
Source code: https://github.com/henriquescrrrr/carrageis-servertrades


