Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Supported environments
Server-side
Singleplayer
Tags
Creators
Details
Licensed MIT
Published 2 months ago
expTrade
A Minecraft mod/plugin that lets players trade XP with each other. Offers and requests queue up per-player with individual TTLs, and are managed through an in-game chest GUI.
Branches
| Branch | Platform | MC Version |
|---|---|---|
multi_1.21.11 |
Fabric + NeoForge (Architectury) | 1.21.11 |
plugin_1.21.11 |
Spigot, Paper, Purpur, Pufferfish | 1.21.11 |
multi_26.x (upcoming) |
Fabric + NeoForge (Architectury) | 26.x |
plugin_26.x (upcoming) |
Spigot, Paper, Purpur, Pufferfish | 26.x |
Features
- Give or request XP levels or raw XP from any online player
- Per-player incoming trade queue — multiple players can send trades simultaneously
- Chest GUI to review, accept, and decline queued trades
- Live TTL countdown per trade — expired trades are removed automatically
- Configurable timeout and max queue size
- Personal XP threshold — prevent trades that would drop you below a set level
- Admin force-transfer with confirmation step
- Config hot-reload without restarting the server
Trade Queue GUI
Opening /exptrade pending shows a chest with one row per queued trade:
| Slot | Item | Meaning |
|---|---|---|
| 1 | Clock | Seconds remaining before this trade expires |
| 2 | Player Head | Who sent the trade |
| 3 | Water Bucket / Bucket | Offer (giving XP) / Request (asking for XP) |
| 4 | Paper | Trade details on hover (from, type, amount) |
| 8 | Recovery Compass | Click to accept |
| 9 | Compass | Click to decline |
The GUI stays open after each action as long as trades remain in the queue.
Commands
All commands use /exptrade.
| Command | Description |
|---|---|
/exptrade give <player> <levels|exp> <amount|all> |
Offer XP to a player |
/exptrade request <player> <levels|exp> <amount|all> |
Request XP from a player |
/exptrade accept [player] |
Accept the first (or a specific) queued trade |
/exptrade decline [player] |
Decline the first (or a specific) queued trade |
/exptrade cancel |
Cancel your outgoing trade |
/exptrade pending |
Open the trade queue GUI |
/exptrade threshold <levels> |
Set minimum level to keep after a trade |
Admin (exptrade.admin / op permission)
| Command | Description |
|---|---|
/exptrade admin transfer <from> <to> <levels|exp> <amount|all> |
Force an XP transfer between two players |
/exptrade admin confirm |
Confirm a pending admin transfer |
/exptrade admin cancel |
Cancel a pending admin transfer |
/exptrade config timeout <10-300> |
Set trade TTL in seconds |
/exptrade config maxqueue <1-50> |
Set max trades per player queue |
/exptrade config reload |
Reload config from disk |
Configuration
Config is written on first launch.
Multi-loader — config/exptrade.json
Paper plugin — plugins/expTrade/config.json
{
"timeoutSeconds": 60,
"maxQueueSize": 10
}
| Field | Default | Description |
|---|---|---|
timeoutSeconds |
60 |
Seconds before an unaccepted trade expires |
maxQueueSize |
10 |
Max number of queued trades per player |
Requirements
Multi-loader: Architectury API
Paper: Paper 1.21.11+


