Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details

A secure, dupe-proof trading GUI designed for modern Paper survival servers.
Overview
Dropping items on the ground to trade causes item theft, lava loss, and scams. TradeX replaces ground trading with a synchronized, server-authoritative double-chest GUI featuring locked-in countdown confirmations and zero item-duplication exploits.
- No Ground Drops — Items transfer directly between inventories.
- No Server Economy Needed — Pure item-for-item trading out of the box.
- 100% Dupe-Proof — Atomic main-thread execution with strict state locking.
How It Works
- Request: Run
/trade <player>. The target receives an interactive chat invite with a clickable [Accept] button. - Place Items: Both players place their items in a split 54-slot chest. Each side is strictly isolated.
- Ready Up: When satisfied with the offer, both players click the green Ready button.
- Countdown Lock: A 5-second countdown begins with a live clock in the divider. All item movement is locked.
- Atomic Swap: When the timer reaches zero, items swap safely into each player's inventory.
(Either player can click Unready at any second during the countdown to cancel the timer and adjust their offer.)
Features
- Split-Chest Interface: 54-slot double chest with a central grey glass divider separating both halves.
- Clickable Chat Invites: Send trades with
/trade <player>; recipients accept with one click in chat. - 5-Second Countdown Lock: Prevents last-second bait-and-switch scams.
- Atomic Anti-Dupe Engine: GUI slots are wiped before containers close; items transfer synchronously on the main thread.
- Emergency Cancel: Clicking Cancel or pressing ESC immediately returns all items to original owners.
- Player Preferences: Run
/tradesettingsto toggle incoming trade requests or notification sounds. - LuckPerms Ready: Integrates natively with LuckPerms and falls back to standard Bukkit permissions.
Commands
| Command | Alias | Description |
|---|---|---|
/trade <player> |
— | Send a trade request to an online player |
/tradeaccept |
/ta |
Accept your latest incoming trade request |
/tradedeny |
/td |
Deny your latest incoming trade request |
/tradesettings |
/ts |
Open your personal trade settings menu |
Permissions
| Permission | Default | Description |
|---|---|---|
tradex.use |
Everyone | Access to all trading commands |
tradex.admin |
OP | Access to administrative features |
tradex.bypass.disabled |
OP | Send trade requests to players with trades toggled off |
Configuration
Default options in plugins/TradeX/config.yml:
request-timeout: 60
countdown-seconds: 5
request-sound: ENTITY_EXPERIENCE_ORB_PICKUP
complete-sound: ENTITY_PLAYER_LEVELUP
countdown-sound: UI_BUTTON_CLICK
All in-game messages support MiniMessage tags, hover events, and custom hex colors.
Requirements
| Software | Supported Versions |
|---|---|
| Server Engine | Paper (1.21 – 1.21.11 & 26.1 – 26.3) |
| Java Runtime | Java 21 or newer |
| Permissions | LuckPerms 5.x (Optional) |
Support
Have an issue, question, or suggestion? Use the Discussions tab on this project page.
© undefinedX — All Rights Reserved. Redistribution, resale, or unauthorized modification of this software is strictly prohibited.


