TheTrade is a powerful dual-GUI trading system with integrated security measures to guard against fraud, errors, and exploits.
It supports item trading, optional currency trading through Vault, and a confirmation-based completion system.
From 1.8 to 1.21+, it works perfectly out-of-the-box whether you run a small SMP or a large network.
TheTrade supports endless features, and constant updates with new ones too. Here is an overview of what TheTrade has to offer:
Prevent players from trading in specified worlds (see config.yml)
Prevent users from trading by banning and unbanning them via admin command - Designed for complete control in server moderation
Shift right-click to start a trade without a command (toggleable in config.yml)
Set a radius players must be within to trade (entirely optional, can be disabled in config.yml)
See all active trades (admins)
See all active trade requests (admins)
Cancel player as an admin
Cancel requests sent by players, from a detailed list-like menu
Detailed logging for trades (see section below for more info)
Detailed logging for trade bans and unbans
Supports many currency plugins to trade in-game money using Vault (fully customizable in config)
Prevent user-specified items from being traded (config.yml)
All messages are configurable, and we are constantly working to add new languages to this plugin
So much more
Every trade is
automatically logged (config.yml has detailed options for this), making it easy to keep track of your server’s economy and resolve disputes when necessary.
Trade logs contain the following details:
• Players involved
• Traded items & amount
• Currency amount
• Time & status of completion
Perfect for moderation, investigations, and managing your overall economy.
Player Commands Simple, fast, and built to prevent abuse.
/trade <player> • Sends a trade request to a player
• Accepts a pending request automatically if one exists
• Blocks self-trading
• Supports banned worlds
• Respects trade bans
Admin Commands All admin commands
require: thetrade.admin.command or
thetrade.admin.* (more detailed permissions in permissions section)
/tradeadmin help • View all admin commands
/tradeadmin activetrades • Shows all active trades
• Click trades in chat to cancel instantly (in-game)
/tradeadmin activerequests • Shows all pending trade requests
• Click requests to cancel them
/tradeadmin canceltrade <player> • Force cancels a player’s current trade
• Permission: thetrade.admin.canceltrades
TheTrade is built to be
fully configurable from the ground up. Our priority in this plugin was to make
ANYTHING configurable that could be configured.
#The language you want the plugin to run in. #Current options: # - 'lang_en' - English # - 'lang_es' - Español (Spanish) # - 'lang_nl' - Nederlands (Dutch) # - 'lang_ko' - 한국어 (Korean) # - 'lang_zh_cn' - 中文(简体) (Chinese Simplified) # - 'lang_zh_tw' - 中文(繁體) (Chinese Traditional) language: 'lang_en'
#Should we log trades in 'logs.yml' ? #Default: true logTrades: true
#Should we log when a user was banned and who banned them (from trading) in 'logs.yml' ? #Default: true logBans: true
#The amount of time (in seconds) a trade request will last before it expires. #Default: 30 requestDuration: 30
#The amount of time (in seconds) to wait before completing the trade AFTER both players have clicked 'ready'. #Default: 3 completeTimer: 3
#Should we send a trade request to a player when shift right-clicking them? #Default: true shiftClickTrade: true
#Trading will be prevented in any of the worlds in this list. tradeBannedWorlds: - 'put_the_name_of_the_world_here'
#Should we allow an option to trade money (currency)? #If this is false, the currency button will be hidden. #We currently hook into Vault, which supports (most) economy plugins. #Vault MUST BE installed for this option. #Default: true tradeInGameMoney: true
#Should only allow players to trade with players within a certain radius of them? #Default: true tradeRadiusToggle: true
#If enabled, what should the radius be? (e.g. 40 is a 40 block radius). #Note, the Y radius is not affected. E.g. radius is 40, but the players are at Y = 100 and Y = 0, #as long as their X and Z values are withing each other, they can still trade. #Default 100 tradeRadiusAmount: 100
#Items in this list will be blocked from trades. Note, COMMAND is just the name for COMMAND_BLOCK in older versions. :) #Only material names will work. blacklistItems: - BARRIER
- LIGHT
- DEBUG_STICK
- COMMAND_BLOCK
- COMMAND
- COMMAND_CHAIN
- COMMAND_REPEATING
#Should we notify you when a new update is available for this plugin? #We STRONGLY recommend enabling this as we push out updates with new features and bug fixes you don't want to miss. #Default: true updateChecker: true
#DO NOT CHANGE THIS! IT WILL BREAK THIS PLUGIN! fileVersion: 0
Code (YAML):
prefix: '&8
[&6&lT&e&lrade&8
]&r'
logprefix: '
[TheTrade
]'
general:
notPlayer: '
%log_prefix% Only players can do this!' notOnline: '
%prefix% &cThat player is not online!' fileError: '
%log_prefix% Unable to create file "%file%"!' fileSaveError: '
%log_prefix% Unable to save file "%file%"!' noVault: '
%log_prefix% Vault AND an Economy Plugin was not found! Trading money WILL BE DISABLED.' noPermission: '
%prefix% &cYou do not have permission to do that.' unsupportedVersion: '
%log_prefix% This version is not supported because one of the APIs we use does not support it! Trading currency WILL NOT WORK.' update:
checkFailed: '
%log_prefix% Failed to check for plugin updates! ' available: '
%log_prefix% A new update is available! Current version: %current% Latest version: %latest% - Download: %url%' availableInGame: '
%prefix% &eA new update is available! Click To Download: %url%' inGameHover: '&eClick To View Update'
command:
trade:
usage: '
%prefix% &cInvalid usage! /trade <player>' needOtherPlayer: '
%prefix% &cYou cannot trade with yourself!' banned: '
%prefix% &cYou are currently banned from trading.' playerBanned: '
%prefix% &cThat player is currently banned from trading.' admin:
usage: '
%prefix% &cInvalid usage! /tradeadmin help' activetrades:
title: '
%prefix% &eActive trades: &7(%amount%) | &eClick Any To Cancel' format: '&7
%id%. &e%player1% &7- &e%player2% &7| &eClick To Cancel' activetradesconsole:
title: '
%prefix% &eActive trades: &7(%amount%)' format: '&7
%id%. &e%player1% &7- &e%player2%' activerequests:
title: '
%prefix% &eActive Trade Requests: &7(%amount%) | &eClick Any To Cancel' format: '&7
%id%. &e%player1% &7to &e%player2% &7| &eClick To Cancel' activerequestsconsole:
title: '
%prefix% &eActive Trade Requests: &7(%amount%)' format: '&7
%id%. &e%player1% &7to &e%player2%' cancelHover: '&7Click To Cancel'
canceltradeusage: '
%prefix% &cInvalid usage! &7/tradeadmin canceltrade <player>' cancelrequestusage: '
%prefix% &cInvalid usage! &7/tradeadmin cancelrequest <player>' banusage: '
%prefix% &cInvalid usage! &7/tradeadmin ban <player>' unbanusage: '
%prefix% &cInvalid usage! &7/tradeadmin unban <player>' banned: '
%prefix% &cYou banned &a%player% &cfrom trading! &eTo unban, &7/tradeadmin unban <player>' unbanned: '
%prefix% &eYou unbanned &a%player% &efrom trading!' alreadyBanned: '
%prefix% &cThat player is already banned! &eTo unban, &7/tradeadmin unban <player>' notBanned: '
%prefix% &cThat player is not banned! &eTo ban, &7/tradeadmin ban <player>' nottrading: '
%prefix% &cThat player is not in a trade!' tradecanceled: "%prefix% &eYou canceled &a%player%'s &etrade." requestcanceled: "%prefix% &eYou canceled &a%player%'s &etrade request." nooutgoingrequest: '
%prefix% &cThat player does not have an outgoing trade request.' help: - '
%prefix% &eTradeAdmin Help &7(&f/thetradeadmin&7)' - '&7
--------------------------------'
- '&6/tradeadmin activetrades'
- '&7- &fView
all currently active trades.'
- '&7- &eClick
any trade to cancel it.'
- ''
- '&6/tradeadmin activerequests'
- '&7- &fView
all outgoing trade requests.'
- '&7- &eClick
any request to cancel it.'
- ''
- '&6/tradeadmin canceltrade <player>'
- '&7- &fForce cancel a players active trade.'
- '&7- &8Permission: ðetrade.admin.canceltrades' - ''
- '&6/tradeadmin cancelrequest <player>'
- '&7- &fForce cancel a players outgoing request.'
- '&7- &8Permission: ðetrade.admin.cancelrequests' - ''
- '&6/tradeadmin help'
- '&7- &fShows this help menu.'
trade:
newRequest: '
%prefix% &eYou have a trade request from &a%player%. &a&lClick To Accept' acceptCommandHoverMsg: '&e/trade
%player%' sent: '
%prefix% &eYou sent a trade request to &a%player%. &eThey have &a%time%s &eto accept.' alreadySent: '
%prefix% &cYou already sent a trade request!' sentExpired: '
%prefix% &eYour trade request to &a%player% &eexpired.' receivedExpired: '
%prefix% &eYour trade request from &a%player% &eexpired.' requesterDenied: '
%prefix% &a%player% &cdenied your trade request.' requestedDenied: "%prefix% &cYou declined &a%player%'s &ctrade request." playerOffline: '
%prefix% &cYou trade request could not be accepted because &a%player% &cis offline.' playerRequestCancel: '
%prefix% &a%player% &ccanceled their trade request!' cancelPlayer: '
%prefix% &cYou canceled the trade.' canceledOther: '
%prefix% &a%player% &ccanceled the trade.' invalidMoneyInput: '
%prefix% &cThat is not a valid amount!' notWithinRadius: '
%prefix% &a%player% &cis too far away to trade! &7(Must be within %radius% blocks)' blacklistedItem: '
%prefix% &cYou cannot trade that.' admincancel: '
%prefix% &cYour trade was canceled by an admin.' admincancelrequestRequesterPOV: '
%prefix% &cYour trade request to &a%requested% &cwas canceled by an admin.' admincancelrequestRequestedPOV: '
%prefix% &cYour trade request from &a%requester% &cwas canceled by an admin.' noMoney: '
%prefix% &cYou cannot deposit more than you have!' complete: '
%prefix% &eTrade Complete! Summary: ' summaryPositive: '&7
[&a+&7
]&a
%item% &7- &e%amount%x' summaryNegative: '&7
[&c-&7
]&c
%item% &7- &e%amount%x' summaryPositiveMoney: '&7
[&a+&7
]&a $
%amount%' summaryNegativeMoney: '&7
[&c-&7
]&c $
%amount%' bannedWorld: '
%prefix% &cYou cannot trade here!' gui:
you: 'You'
otherPlayer: '
%player%' moneyitem:
name: '&fAdd Money'
lore: - ' '
- '&eCurrent Value: &a$%amount%' - '&aClick To Set'
othermoneyitem:
name: "&f%player%'s Deposit" lore: - ' '
- '&eCurrent Value: &a$%amount%' - ' '
- '&7You will get this amount '
- '&7once the trade is complete.'
readyItem:
name: '&bReady'
lore: - ' '
- '&eClick to complete trade'
confirmedItem:
name: '&dConfirmed'
lore: - ' '
- '&7Waiting for
%player% to confirm.' - '&cClick to Cancel'
timerItem:
name: '&eCompleting in
%time%s' lore: - ' '
- '&cClick to Cancel'
#DO NOT CHANGE THIS! IT WILL BREAK THIS PLUGIN! fileVersion: 0