SafeTrade
SafeTrade is a script that makes trading items between players easy and simple.
Features
- Safe and simple way for people to trade items
- Configurable messages
- Inventory checker for full inventory
- Creative mode option
- Configurable trade cool down and trade time out
- Configurable distance and same world checker
- Configurable countdown timer when trading for safety
- Configurable sounds for specific functions
- Configurable GUI items
- Blacklist items based on name, lore, item type, or exact item
Commands
- /trade [<player>] - Request a trade / Accept a trade
- /tradetoggle - Enable or disable trading
- /tblacklist [<create,remove,set>] [<id>] - Create blacklist ids (Edit in blacklist.yml)
- /treload - Reload the config of the script
Permissions
- trade.use (for /trade and /tradetoggle)
- trade.reload (for /treload)
- trade.blacklist (for /tblacklist)
Blacklisting Guide
When you first load up the file, a blank blacklist.yml file will be created. I recommend not editing this file when it is empty.
1. To make a blacklist item, you have to create it using the '/tblacklist create <id>' command. The <id> can be anything you want.
2. After using the create command, it will be created in the blacklist.yml file. You can then go change the settings for that id.
3. To set an exact item, hold an item that is not air in your hand and use command '/tblacklist set <id>'. This will make it to where whatever you are holding cannot be traded.
4. Make sure to read the top of the blacklist.yml for directions on what options do what. After you create your first blacklist id, the directions will generate.
Required Plugins
Skript Bensku fork 2.3.6: https://github.com/SkriptLang/Skript/releases
SkQuery fork: https://www.spigotmc.org/resources/unofficial-skquery-fork-1-6-1-12.36631/
Skellett: https://www.spigotmc.org/resources/skript-java-addon-skellett.34361/
Skript-Yaml: https://www.spigotmc.org/resources/skript-yaml.49829/
Installation
1. Drop all the plugins above into plugins folder and restart server.
2. Download this resource (trade.sk) and put it in the plugins/Skript/scripts folder
3. You can either restart the server again or do /sk reload trade
4. Your done!
Extra Information
1. To put items up for trade, you have to shift click the items. There is a reason for this and I will not change it.
2. Feel free to edit the script's source code to your liking but do not claim it as your own.
3. I will most likely not add economy support to this. If you want to have eco with this trade, then either make a physical currency or use a plugin that allows you to convert virtual currency to physical currency.
4. Here is my discord if you have any questions or need help: AsuDev#0714
Pictures
config.yml
Code (YAML):
## WARNING: DO NOT SET A GUI ITEM TO AIR! IT WILL CAUSE THE TRADING TO BREAK!
Messages :
Prefix : '&8&l [ &e&lTRADING&8&l ] '
TradeNoPermission : ' { prefix } &cYou do not have permission to trade.'
TradeToggleDisabled : ' { prefix } &cYou disabled trading.'
TradeToggleEnabled : ' { prefix } &aYou enabled trading.'
BlacklistedIDExists : ' { prefix } &7The blacklisted item id you specified already
exists.'
BlacklistedIDDoesNotExist : ' { prefix } &7The blacklisted item id you specified does
not exist.'
BlacklistedItem : ' { prefix } &7That item cannot be traded.'
BlacklistedIDCreated : ' { prefix } &7You &acreated &7a blacklist id called &6 { id } &7.
To edit this, you have to edit the &ablacklist.yml &7file.'
BlacklistedIDRemoved : ' { prefix } &7You &cremoved &7the blacklist id called &6 { id } &7.'
BlacklistedIDExactItem : ' { prefix } &7You &3set &7the exact item of blacklist id
called &6 { id } &7to your held item.'
TradeSelf : ' { prefix } &7Yeah, because I would definitely allow you to trade yourself.'
TradeCooldown : ' { prefix } &7Please wait a few seconds before using this command
again.'
PlayerHasTradingDisabled : ' { prefix } &7The player you specified has trading disabled.'
NoTradeInCreative : ' { prefix } &7You cannot trade in creative mode.'
NoTradeInCreative2 : ' { prefix } &7The other player is in creative mode.'
NotSameWorld : ' { prefix } &7You must be in the same world as the specified player
to trade them.'
OutOfDistance : ' { prefix } &7You are too far away from the specified player to trade
them.'
AlreadyInTrade : ' { prefix } &7The other player is already currently in a trade.'
RequestAlreadySent : ' { prefix } &7You already sent this player a trade request ... '
ClickCorrection : ' { prefix } &7Shift click items in your inventory to put up trade
offers.'
GuiName : '&a★You★ &c★Other★'
RequestSent : ' { prefix } &7You sent a trade request to &6 { target } &7.'
TradeCanceled : '&8&l [ &4✘&8&l ] &cThe other player canceled the trade. &8&l [ &4✘&8&l ] '
TradeCanceled2 : '&8&l [ &4✘&8&l ] &cYou canceled the trade. &8&l [ &4✘&8&l ] '
TradeAccepted : '&8&l [ &a✔&8&l ] &bTrade complete. &7Please report any scams! &8&l [ &a✔&8&l ] '
TradeReloaded : ' { prefix } &aThe trade config has been reloaded.'
RequestReceived : ' { prefix } &6 { player } &7sent you a trade request. Use &a/trade
{ player } &7to accept it.'
# Does /trade have a cooldown? Put true or false
# Cooldown duration in seconds
TradeCooldown :
Enabled : true
Timer : 5
# The timout duration of a trade offer
# The countdown of trade ending
# Cooldown duration in seconds
# Do players have to be in same world to trade
# Distance limit for trading (Set to Infinite for no limit)
# Should players be able to trade in creative? true/false
Trade :
TimeOut : 20
CountDown : 6
SameWorld : true
Distance : Infinite
TradeInCreative : false
# Sound played when adding an item to a trade
# Is this sound enabled? Put true/false
# The name of the sound played
# How loud the played sound is
# The pitch of the sound played
# Sounds found at: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
AddOffer :
PlaySound : true
SoundName : ENTITY_EXPERIENCE_ORB_PICKUP
Volume : 1
Pitch : 1
# Sound played when the trade is successful
# Is this sound enabled? Put true/false
# The name of the sound played
# How loud the played sound is
# The pitch of the sound played
# Sounds found at: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
TradeComplete :
PlaySound : true
SoundName : ENTITY_PLAYER_LEVELUP
Volume : 1
Pitch : 1
# Sound played when the trade is not successful
# Is this sound enabled? Put true/false
# The name of the sound played
# How loud the played sound is
# The pitch of the sound played
# Sounds found at: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
TradeCanceled :
PlaySound : true
SoundName : BLOCK_ANVIL_LAND
Volume : 1
Pitch : 0.1
# The gui item for Not Ready (DO NOT SET TO AIR)
NotReady :
ItemID : gray dye
Name : '&7Not Ready ... '
Lore :
- Empty
# The gui item for Ready (DO NOT SET TO AIR)
Ready :
ItemID : lime dye
Name : '&a&lREADY'
Lore :
- Empty
# The gui item for Accept Trade button (DO NOT SET TO AIR)
Accept :
ItemID : green stained glass pane
Name : '&a&lACCEPT TRADE'
Lore :
- '&7&oClick to accept trade.'
# The gui item for Cancel Trade button (DO NOT SET TO AIR)
Cancel :
ItemID : red stained glass pane
Name : '&4&lCANCEL TRADE'
Lore :
- '&7&oClick to cancel trade.'
# The gui item for Divider line (DO NOT SET TO AIR)
Divider :
ItemID : iron bars
Name : '&4'
Lore :
- Empty
# The gui item for Stop Timer item (DO NOT SET TO AIR)
StopTimer :
ItemID : barrier
Name : '&c&lSTOP TIMER'
Lore :
- '&7&oClick to stop the timer.'
# The gui item for Blank Slot item (DO NOT SET TO AIR)
BlankSlot :
ItemID : light gray stained glass pane
Name : '&4'
Lore :
- Empty
Messages :
Prefix : '&8&l [ &e&lTRADING&8&l ] '
TradeNoPermission : ' { prefix } &cYou do not have permission to trade.'
TradeToggleDisabled : ' { prefix } &cYou disabled trading.'
TradeToggleEnabled : ' { prefix } &aYou enabled trading.'
BlacklistedIDExists : ' { prefix } &7The blacklisted item id you specified already
exists.'
BlacklistedIDDoesNotExist : ' { prefix } &7The blacklisted item id you specified does
not exist.'
BlacklistedItem : ' { prefix } &7That item cannot be traded.'
BlacklistedIDCreated : ' { prefix } &7You &acreated &7a blacklist id called &6 { id } &7.
To edit this, you have to edit the &ablacklist.yml &7file.'
BlacklistedIDRemoved : ' { prefix } &7You &cremoved &7the blacklist id called &6 { id } &7.'
BlacklistedIDExactItem : ' { prefix } &7You &3set &7the exact item of blacklist id
called &6 { id } &7to your held item.'
TradeSelf : ' { prefix } &7Yeah, because I would definitely allow you to trade yourself.'
TradeCooldown : ' { prefix } &7Please wait a few seconds before using this command
again.'
PlayerHasTradingDisabled : ' { prefix } &7The player you specified has trading disabled.'
NoTradeInCreative : ' { prefix } &7You cannot trade in creative mode.'
NoTradeInCreative2 : ' { prefix } &7The other player is in creative mode.'
NotSameWorld : ' { prefix } &7You must be in the same world as the specified player
to trade them.'
OutOfDistance : ' { prefix } &7You are too far away from the specified player to trade
them.'
AlreadyInTrade : ' { prefix } &7The other player is already currently in a trade.'
RequestAlreadySent : ' { prefix } &7You already sent this player a trade request ... '
ClickCorrection : ' { prefix } &7Shift click items in your inventory to put up trade
offers.'
GuiName : '&a★You★ &c★Other★'
RequestSent : ' { prefix } &7You sent a trade request to &6 { target } &7.'
TradeCanceled : '&8&l [ &4✘&8&l ] &cThe other player canceled the trade. &8&l [ &4✘&8&l ] '
TradeCanceled2 : '&8&l [ &4✘&8&l ] &cYou canceled the trade. &8&l [ &4✘&8&l ] '
TradeAccepted : '&8&l [ &a✔&8&l ] &bTrade complete. &7Please report any scams! &8&l [ &a✔&8&l ] '
TradeReloaded : ' { prefix } &aThe trade config has been reloaded.'
RequestReceived : ' { prefix } &6 { player } &7sent you a trade request. Use &a/trade
{ player } &7to accept it.'
# Does /trade have a cooldown? Put true or false
# Cooldown duration in seconds
TradeCooldown :
Enabled : true
Timer : 5
# The timout duration of a trade offer
# The countdown of trade ending
# Cooldown duration in seconds
# Do players have to be in same world to trade
# Distance limit for trading (Set to Infinite for no limit)
# Should players be able to trade in creative? true/false
Trade :
TimeOut : 20
CountDown : 6
SameWorld : true
Distance : Infinite
TradeInCreative : false
# Sound played when adding an item to a trade
# Is this sound enabled? Put true/false
# The name of the sound played
# How loud the played sound is
# The pitch of the sound played
# Sounds found at: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
AddOffer :
PlaySound : true
SoundName : ENTITY_EXPERIENCE_ORB_PICKUP
Volume : 1
Pitch : 1
# Sound played when the trade is successful
# Is this sound enabled? Put true/false
# The name of the sound played
# How loud the played sound is
# The pitch of the sound played
# Sounds found at: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
TradeComplete :
PlaySound : true
SoundName : ENTITY_PLAYER_LEVELUP
Volume : 1
Pitch : 1
# Sound played when the trade is not successful
# Is this sound enabled? Put true/false
# The name of the sound played
# How loud the played sound is
# The pitch of the sound played
# Sounds found at: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html
TradeCanceled :
PlaySound : true
SoundName : BLOCK_ANVIL_LAND
Volume : 1
Pitch : 0.1
# The gui item for Not Ready (DO NOT SET TO AIR)
NotReady :
ItemID : gray dye
Name : '&7Not Ready ... '
Lore :
- Empty
# The gui item for Ready (DO NOT SET TO AIR)
Ready :
ItemID : lime dye
Name : '&a&lREADY'
Lore :
- Empty
# The gui item for Accept Trade button (DO NOT SET TO AIR)
Accept :
ItemID : green stained glass pane
Name : '&a&lACCEPT TRADE'
Lore :
- '&7&oClick to accept trade.'
# The gui item for Cancel Trade button (DO NOT SET TO AIR)
Cancel :
ItemID : red stained glass pane
Name : '&4&lCANCEL TRADE'
Lore :
- '&7&oClick to cancel trade.'
# The gui item for Divider line (DO NOT SET TO AIR)
Divider :
ItemID : iron bars
Name : '&4'
Lore :
- Empty
# The gui item for Stop Timer item (DO NOT SET TO AIR)
StopTimer :
ItemID : barrier
Name : '&c&lSTOP TIMER'
Lore :
- '&7&oClick to stop the timer.'
# The gui item for Blank Slot item (DO NOT SET TO AIR)
BlankSlot :
ItemID : light gray stained glass pane
Name : '&4'
Lore :
- Empty
blacklist.yml
Code (YAML):
## This is the item blacklist for trading.
## Use /tblacklist <create,remove,set> <id> for managing the item blacklist.
##
## Detection Types:
## 'Name' = Detect blacklisted item by name (For DetectionType Option)
## 'Lore' = Detect blacklisted item by lore (For DetectionType Option)
## 'Both' = Detect blacklisted item by name and lore (For DetectionType Option)
## 'Type' = Detect blacklisted item by type (For DetectionType Option)
## 'ExactItem' = Detect blacklisted item by exact item (For DetectionType Option)
##
## Text Detection Types:
## 'Contains' = If name of blacklisted item CONTAINS certain text (For TextDetectionType Option) Does not work with lore.
## 'Is' = If name of blacklisted item IS certain text (For TextDetectionType Option) Does not work for lore.
##
## ItemName = The text to find in the name of a item (Applies when DetectionType is set to 'Name' or 'Both')
## ItemLore = The text to find in the lore of a item (Applies when DetectionType is set to 'Lore' or 'Both'
## ItemType = The item type of the item you want to blacklist (Applies when DetectionType is set to 'Type')
## ExactItem = Detection for an exact item (Applies when DetectionType is set to 'ExactItem'. To set an exact item, use /tblacklist set <id>)
'1' :
DetectionType : Name
TextDetectionType : Contains
ItemName : '&dGod Sword'
'2' :
DetectionType : Lore
TextDetectionType : Contains
ItemLore : '&7&oUntradeable ... '
'3' :
DetectionType : Both
TextDetectionType : Contains
ItemName : '&cForbidden Item'
ItemLore : '&7&oThis item cannot be traded.'
'4' :
DetectionType : Type
ItemType : 'diamond sword'
'5' :
DetectionType : ExactItem
ExactItem :
== : org.bukkit.inventory.ItemStack
type : DIAMOND_SWORD
meta :
== : ItemMeta
meta-type : UNSPECIFIC
display-name : §bBlargghhh
lore :
- §9Trolls use this weapon ...
## Use /tblacklist <create,remove,set> <id> for managing the item blacklist.
##
## Detection Types:
## 'Name' = Detect blacklisted item by name (For DetectionType Option)
## 'Lore' = Detect blacklisted item by lore (For DetectionType Option)
## 'Both' = Detect blacklisted item by name and lore (For DetectionType Option)
## 'Type' = Detect blacklisted item by type (For DetectionType Option)
## 'ExactItem' = Detect blacklisted item by exact item (For DetectionType Option)
##
## Text Detection Types:
## 'Contains' = If name of blacklisted item CONTAINS certain text (For TextDetectionType Option) Does not work with lore.
## 'Is' = If name of blacklisted item IS certain text (For TextDetectionType Option) Does not work for lore.
##
## ItemName = The text to find in the name of a item (Applies when DetectionType is set to 'Name' or 'Both')
## ItemLore = The text to find in the lore of a item (Applies when DetectionType is set to 'Lore' or 'Both'
## ItemType = The item type of the item you want to blacklist (Applies when DetectionType is set to 'Type')
## ExactItem = Detection for an exact item (Applies when DetectionType is set to 'ExactItem'. To set an exact item, use /tblacklist set <id>)
'1' :
DetectionType : Name
TextDetectionType : Contains
ItemName : '&dGod Sword'
'2' :
DetectionType : Lore
TextDetectionType : Contains
ItemLore : '&7&oUntradeable ... '
'3' :
DetectionType : Both
TextDetectionType : Contains
ItemName : '&cForbidden Item'
ItemLore : '&7&oThis item cannot be traded.'
'4' :
DetectionType : Type
ItemType : 'diamond sword'
'5' :
DetectionType : ExactItem
ExactItem :
== : org.bukkit.inventory.ItemStack
type : DIAMOND_SWORD
meta :
== : ItemMeta
meta-type : UNSPECIFIC
display-name : §bBlargghhh
lore :
- §9Trolls use this weapon ...
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.10, 1.11, 1.12
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
SafeTrading is a free Minecraft Java mod. Compatible with Minecraft 1.10, 1.11, 1.12, 1.13. Downloaded 2,361 times (via Spigot). Download it and open it directly in the game.