expTrade
Trade XP levels with other players via commands. Send offers or requests, accept or decline with clickable chat buttons. Accurate per-level XP math ensures fair transfers. Includes admin controls and per-player thresholds.
expTrade
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 decline | | 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.
Paper plugin — `config/exptrade.json` Paper plugin — `plugins/expTrade/config.json`
```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
Paper: Architectury API Paper: Paper 1.21.11+