Free MC Plugin TokenEnchant 18.5.6
Over 200 of fully customisable enchants! MUST HAVE plugin for Prison/Faction/PvP Server!

Capability of TokenEnchant is featured in SSundee's latest Faction Series Youtube video. (Ofc, they have loads of (over 100 new) custom enchantments programmed using TokenEnchantAPI).

This plugin provides an Enchantment Sign, which a player would right-click to enchant an item he is holding. A player would need in-plugin tokens to enchant an item. You can specify what sort of enchantments you wish to provide, and which enchantment should be applied to what type of items in a config.yml.

You can also specify how cost of enchantment at different level will increase. At the moment there are two increment scheme:
  • Constant: cost = base-cost
  • Linear: cost = base-cost + (level * base-cost)
  • Exponential: cost = base-cost + base-cost*level^exponent
The enchantment sign will display the amount of token a player would need. This sign is individually displayed. The player just needs to look at the sign with an item, which he wishes to enchant, in his hand. Then an appropriate token cost will be automatically displayed on the sign.

Command Alias:
  • With new Token Alias Commands, you can use external plugins like Backpack plugin and use Tokens to give those features to players!

Test Server:
Supported Enchantments / PotionEffects:


  • /tokenenchant help or /te or /te help: displays a help menu
  • /te add <name> <token_amount> : adds <token_amount> tokens to the player <name>
  • /te remove <name> <token_amount> : remove <token_amount> from the player <name>
  • /te set <name> <token_amount> : sets <token_amount> tokens to the player <name>
  • /te reload : reloads the config.yml
  • /te or /te balance [other] : displays your current token balance of you or [other]
  • /te withdraw <token_amount> : withdraws the specified number of tokens from your account and gives you the token items in your inventory.
  • /te expexchange [max_exp_to_be_exchanged] : exchanges the specified amount of EXP or all available EXP to tokens.
  • /te givetokens [name] <amount> : gives <amount> token items to yourself (or a player [name])
  • /tealiasreload : reloads command aliases.
  • /te enchant [player][enchant_name][[+]level] : enchants the item [player] is holding with [enchant_name]. If [level] is provided, the command will apply [enchant_name] with [level] to the item, which [player] is holding. If [+level] is specified, [level] will be "added" to the current enchantment level.
  • /te refund [player][enchant_name] : refund [player] for the enchantment [enchant_name]
  • /tokenenchant givebp <name> <row> [bpname] cost:xxx : gives <name> a backpacked named [bpname] of size <row> costing xxx.
  • (since v5) /tokenenchant baltop : lists ranking of token balance.
  • tokenenchant, te, token
  • tokenenchant.sign.create : allows you to create a TokenEnchant sign.
  • tokenenchant.reload : allows you to use /te reload
  • tokenenchant.add : allows you to use /te add command
  • tokenenchant.remove : allows you to use /te remove command
  • tokenenchant.balance : allows you to use /te balance command
  • tokenenchant.balance.other : allows you to use /te balance <other> command
  • tokenenchant.withdraw: allows you to use /te withdraw command
  • tokenenchant.expexchange: allows you to use /te expexchange command
  • tokenenchant.alias.reload : allows you to use /tealiasreload command.
  • tokenenchant.enchant : allows you to use /te enchant command.
  • tokenenchant.refund : allows you to use /te refund <enchant_name>
  • tokenenchant.refund.other : allows you to use /te refund <player> < enchant_name>
You can specify "permission: xxxx.xxxx" node for each enchantment/potion in the config.yml. If you specify a permission node, only the player with the permission node can use the enchantment/potion.


Then you need to install TokenEnchant.jar in the plugins folder. You would also need Vault.jar (since the support of regular economy instead of tokens)

Please make sure to install TE-XXXEnchant.jar file (which contain custom enchantments) in plugins/TokenEnchant/enchants folder. Those effects which does not have link in the effect lists above do not require separate .jar file.

Vault, WorldGuard, ProtocolLib

Work with:
  • VKBackPack
  • EZBlock
  • DeluxChat
  • AutoSell (make sure to set "pickup: false" in Explosive)
  • VKAutoPickup (all TokenEnchant features will work with this plugin)
  • AutoPickup (use_explode_event option will not work with this plugin)
  • MineResetLitePlus
  • FeatherBoard
  • Faction (MassiveCore's official 2.x version)
  • mcMMO
  • PrisonMines

Once you set the configuration, you just need to create an enchant sign:
  • to place "Enchant" sign, you need to write !Enchant! in the 1st line
  • to place "Exchange" sign, you need to write !Exchange! in the 1st line
  • to place "Withdraw" sign, you need to write !Withdraw! in the 1st line and "token amount to be withdrawn" in the 3rd line (2nd and 4th lines can bey anything)
  • to place "ExpExchange" sign, you need to write !ExpExch! in the 1st line
  • to place "Repair" sign, you need to write !Repair! in the 1st line


NOTE: Sound enum IDs have been changed in 1.9. If you get errors saying Sound enum IDs you have in your config is not found, please use Sound enum ID from spigot version you're using. You can look up 1.8 Sound enum IDs at here

Custom naming:

All custom effects supports "alias:" option so that you can use your own name (including color) for all effects (even vanilla enchantments!!)
The following example shows Efficiency level 13 and Excavation level 1 has been customised using "alias:" option. With this option, Efficiency 13 will not show as "Efficiency enchantment.level.13" and you can control how you want it to show up!
NOTE: if this option causes some enchants not working as intended, turn it off (CustomEnchantDisplay: false|true).

Sample confing.yml
Code (Text):

ErrorMessage: "&c [TE] : Some error occured."
msg: "=== &e[&aTokenEnchant Commands List (%version%)&e] &r==="
msg: "/tokenenchant or /tokenenchant help : display this help menu."
msg: "/tokenenchant reload : reloads config file."
permission: "tokenenchant.reload"
msg: "/tokenenchant set <name> <amount> : sets <name> <amount> tokens."
permission: "tokenenchant.add"
msg: "/tokenenchant add <name> <amount> : adds <name> <amount> tokens."
permission: "tokenenchant.add"
msg: "/tokenenchant remove <name> <amount> : removes <name> <amount> tokens from <name>."
permission: "tokenenchant.add"
msg: "/tokenenchant balance [name] : displays the token balance of yourself or [name]."
permission: "tokenenchant.balance"
msg: "/tokenenchant withdraw <amount> : withdraws the specified amount of tokens from your account."
permission: "tokenenchant.withdraw"
msg: "/tokenenchant expexchange : exchanges the current EXP values to tokens."
permission: "tokenenchant.expexchange"
msg: "/tokenenchant givetokens <name> <amount> : gives <name> <amount> tokens."
permission: "tokenenchant.expexchange"
msg: "/tokenenchant enchant <name> <enchant> [level] [cost:xxx] : enchants the item <name> is holding with <enchant>."
permission: "tokenenchant.enchant"
msg: "/tokenenchant repair <name> : repairs all the enchantments of the item <name> is holding."
permission: ""
msg: "/tokenenchant refund <name> <enchant> : refund <name> for the enchantment <enchant>."
permission: "tokenenchant.refund"
msg: "/tokenenchant givebp <name> <row> [bpname] cost:xxx : gives <name> a backpacked named [bpname] of size <row> costing xxx."
permission: "tokenenchant.givebp"
msg: "/tokenenchant baltop : list top token balance."
permission: "tokenenchant.baltop"

SelfBalance: "&a[TE] You currently have &b%token% &atokens."
NoOthersBalance: "&c[TE] You are not allowed to check other's balance."
NoTargetPlayer: "&a[TE] A palyer needs to be specified."
PlayerOffline: "&a[TE] &e%player% &ais currently offline."
PlayerNotFound: "&a[TE] &e%player% &awas not found."
Balance: "&a[TE] &e%player% &acurrently has &b%token% &atokens."
SetSuccess: "&a[TE] You have set &e%token% &atokens to &e%player%&a."
AddSuccess: "&a[TE] You have added &e%token% &atokens to &e%player%&a."
Received: "&a[TE] You have received &e%token% &atokens."
Deducted: "&a[TE] &e%token% &atokens have been deducted."
RemoveSuccess: "&a[TE] You have removed &e%token% &atokens from &e%player%&a."
NotEnoughTokens: "&c[TE] You do not have enough tokens. You need at least %needed% tokens."
NotEnoughTokenItems: "&c[TE] You do not have enough token items. You need at least %needed% token item(s)."
NotEnoughExpLevels: "&c[TE] You do not have enough EXP levels. You need at least %exp_needed% EXP level(s)."
WithdrawSuccess: "&a[TE] You have withdrawn &e%tokens% &atokens."
InventoryFull: "&a[TE] Inventory is full! &e%tokens% &atokens could not be withdrawn!"
ExchangeSuccess: "&a[TE] &e+ %token% &atoken(s) has been added to your account."
NeedToHoldItem: "&c[TE] You need to hold an item to enchant."
CannotEnchantThis: "&c[TE] You cannot enchant the item you're holding."
CannotRepairThis: "&c[TE] You cannot repair the item you're holding."
msg: "&a[TE] &e+ %addedlevel% &d%enchant% &aenchantment level. %token% tokens have been deducted."
sound: LEVEL_UP
RepairSuccess: "&a[TE] &eThe item repaired. %token% tokens have been deducted."
MaxedOut: "&c[TE] Your item has already maxed out on &e%enchant% &cenchantment."
NoPermission: "&c[TE] You don't have a permission for this!"
NoSuchEnchant: "&c[TE-Admin] That (&e%enchant%&c) is not a valid enchant. Please specify the enchant listed in the config file."
TokenItemsGiven: "&a[TE] &e%tokenitems% &atoken items were given to &e%player%&a."
NoPriceSet: "&a[TE] Price is not set for this."
CommandSuccess: "&a[TE] &e%command%&a was executed, and it cost &e%token% tokens."
NeedPermission: "&a[TE] You need a permission &etokenenchant.alias.command.%command% &ato use this command &e%command%&a."
CannotRefundThis: "&c[TE] We cannot refun the item you're holding."
RefundSuccess: "&a[TE] &e- 1 &d%enchant% &aenchantment level. %token% tokens have been refunded."
BackPackGiven: "&a[TE] %player% has given a backpack and %token% toknes has been deducted."
VKBackPackNotFound: "&a[TE] VKBackPack plugin was not found."
TokenBalTopHeader: "&a[TE] Token Balance Top - page:%page%/%total%-"
TokenBalTopList: "%rank%. %name%, %balance%"
TokenBalTopTypeMore: "&a[TE] Type &c/te baltop %next% &ato read the next page."
OnlyOneAtTheTime: "&c[TE] Only one item can be enchanted at the time."
CannotAddMoreEnchant: "&c[TE] You cannot add anymore than &e%max%&c custom enchantments!"
msg: "&c[TE] You cannot use an item with enchants more than &e%max%&c."

# if UseToken is true, the plugin use its own tokens, if it's false
# it uses economy thorugh Vault
UseToken: true

# if this option is true, the cost of enchant is dynamically calculated and displayed at where {ench_cost} is specified on the sign.
UseDynamicSignUpdate: true

Currency: token # token, money, or (exp...not supported atm)

# formating of number
BeautifyNumber: false
MaxCharLength: 4;
# the folloiwngs are units of order.
- k
- M
- B
- T
- Q
- P
- E
- Z

EnchantSign: "[&9Enchant&8]"
CostPlaceHolder: "{ench_cost}"
ExchangeSign: "[&9Exchange&8]"
ExchangeRate: 1
RatePlaceHolder: "{ex_rate}"
# the above ExchangeRate will be used for the withdrawal.
WithdrawSign: "[&9Withdraw&8]"
ExpExchangeSign: "[&9EXP Exch&8]"
ExpExchangeRate: 20
ExpRatePlaceHolder: "{exp_rate}"
RepairSign: "[&9Repair&8]"
RepairBase: 1
RepairDiscount: 0.05
RepairRatePlaceHolder: "{rep_rate}"
TokenItemName: "&aTokenItem"
TokenItemLore: "&bHold it in your hand and\n&bRight-Click to redeem &eTokens"

EnchantmentLorePrefix: "&r&7"

# Refund related.
AllowRefund: false
RefundRate: 0.8
# If UseRomanNumeral is true, arabic number will be converted into roman numeral.
UseRomanNumeral: true
# if PureRomanNumeral is true, 1 - 3998 will be converted to RomanNumeral
PureRomanNumeral: false

# if CustomEnchantDisplay is true, you can use "alias:" feature for Enchants: section
# also it will convert into xxxx
CustomEnchantDisplay: true

# if you're using WorlgGuard 6, set the following true and have block-break: allow,
# if you're using WG with no block-break flag, make sure build is allowed and set the below flag "false"
UseWorldGuardNewFlag: true
# if you have a server which does not support fake glow effect
# set the below option to "false"
UseEnchantGlowForPotion: true
MaxEnchantLevel: 100
# To make custom enchantment available through Enchantment Table
# set the following option to "true"
UseEnchantmentTable: false
DefualtEnchantChance: 0.7
UseTokenEnchantSettingForVanillaEnchant: false

# if this option is true, TEBlockExplodeEvent will be handled by TokenEnchant
# if you want other plugin to handle TEBlockExplodeEvent, set it to false;
PickupTEExplodedBlocks: true

# you can adjust the event process priority for TokenEnchant's explosion event.
TEBlockExplodeEventPriority: MONITOR

# This is the maximum number of blocks per explosion. If explosive
# enchant yields an explosion, which explodes more blocks that this
# number, the explosion will be divided into smaller explosions, each of
# which contain maximum this number of blocks.
BlockPerTEBlockExplodeEvent : 200

# fly permission node
# if a player has the following permission node, his fly own't be turned off
FlyPermissionNode: ""
# Valid values are: LINEAR and EXPONENTIAL
# If an invalid value is entered, this will reset to the default setting, which is LINEAR
# CONSTANT: price
# LINEAR: price + (level * price)
# EXPONENTIAL: price + price * level ^ exponent
Curve: Linear

# If invalid values are entered it will not work.
exponent: 1.80

# if this option is true, when you tried to enchant an item, which already has enchantment
# level, the excess enchantment level will be removed and set to the max level.
CapOverEnchant: false

# Refund related
AllowRefund: false
RefundRate: 0.8

# default values
DefaultPotionDuration: 200
DefaultPotionAmplifier: 2

# option to limit the number of custom enchants on an item.
# The number of max enchants can be specified with permission nodes.
# tokenenchant.multiple_enchants.x
# if the permission node does not exist, the default number will be applied
# tokenenchant.multiple_enchants.x : x should not exceed MaximumMaxNumberOfEnchants
# if AllowOverMaxEnchantUse is true, you can use the item which exceeds custom enchants
# but you will not be able to add more custom enchants.
ApplyMaxNumberOfEnchants: false
MaximumMaxNumberOfEnchants: 10
DefaultMaxNumberOfEnchants: 3
ExcludeVanilla: true
AllowOverMaxEnchantUse: true

# Friendly fire option
# it currently supports Factions plugin and mcMMO's party
# if FriendlyFire is set to "true", you cannot harm your faction members or mcMMO party member.
# This option is deprecated.
FriendlyFire_Faction: true
FriendlyFire_McMMO: true

# Prevents self damaging initiating custom effect (default : true)
# if this option is set to true, when you damage yourself effects on your armors/toos won't be activated
# (cases like ender pearling, shooting yourself.... all damages are given but and effects won't be activated)
IgnoreSelfDamage: true

# Command execution with token
# This format is from a plugin called Aliazes.
# default permission for each command te.command.<cmd>
# If you crate an alias "cmd:" as shown beloe, you need to give a permission
# node "tokenenchant.alias.command.cmd" to a player
#cmd: <-- The command.
# price: 20 <-- The amount of toke a player needs to execute this command.
# permission: <-- Permissions section, if this section is not defined, individual permission system will be used, e.g. "tokenenchant.alias.command.cmd"
# - te.command.user <-- For users, this permission should be added as default.
# - te.command.mod <-- For mods, this permission should be added as default.
# - te.command.admin <-- For admins, this permission should be added as default.
# alias: <-- Additional aliases section.
# - cmd2 <-- Additional aliases 1, can be as many as you want.
# default: <-- Default meaning anything below will be ran for the player in all worlds.
# - "!te_rawmessage %p &aHello" <-- To Print this message.
# - "@who" <-- Will run /who command as player.
# - "!give %p 1 32" <-- Will run command as console to give player 32 stone.
# - ">give %p 1 32" <-- Will run command as op to give player 32 stone.
# - if %# = 0 !te_rawmessage %p &aUse '&e/g <name&a' to check user's group.
# - if %# = 1 >pex user %1 group list
# world_nether: <-- The world you wish commands below to be shown in.
# - "!te_rawmessage %p &aHello, you are in the nether." <-- This message will only be seen if player is in the nether.
# example of giving slot 9 chestbackpack to a user (ChestBackpack plugin)
- my.permission.for.backpack9
price: 30
- "!pex user %p add chestbackpack.slots.9"
# example of giving slot 18 chestbackpack to a user (ChestBackpack plugin)
- my.permission.for.backpack18
price: 60
- "!pex user %p add chestbackpack.slots.18"
# example of allowing a player to set his prefix using PermissionsEx command.
- my.permission.for.setprefix
price: 160
- "!pex user %p prefix %1"
- my.permission.for.letmefly
price: 160
- ">fly"

# potion effects included in the default TE:
# Haste (Bukkit name: FAST_DIGGING)
# Speed (Bukkit name: SPEED)
# Nightvision (Bukkit name: NIGHT_VISION)
# Jump (Bukkit name: JUMP)
# Regeneration (Bukkit name: REGENERATION);
# FireResistance (Bukki name: FIRE_RESISTANCE)
# DamageResist (Bukkit name: DAMAGE_RESISTANCE
# Aqua (Bukkit name: WATER_BREATHING)
# Saturation (Bukkit name: SATURATION)
# HealthBoost (Bukkit name: HEALTH_BOOST)
# Strength (Bukkit name: INCREASE_DAMAGE)
# Blindness (Bukkit name: BLINDNESS)
# Confusion (Bukkit name: CONFUSION)
# Harm (aka Instant Damage, Bukkit name: HARM)
# Hunger (Bukkit name: HUNGER)
# Poison (Bukkit name: POISON)
# Slow (Bukkit name: SLOW)
# Weakness (Bukkit name: WEAKNESS)
# Wither (Bukkit name: WITHER)
# Molten (custom : attacker catches fire)
# Fly (custom effect : item holder can fly)
# Explosive : this is a custom effect, which will blow up surrounding blocks. It has an option of auto smelt. This Explosive effect works with MineResetLitePlus's mined block counting as well as Lucky Block feature!
# Excavation : this is a custom effect, It is just like Explosive but it will remove entire cuboid
# Sphered : this is a custom effect, It is just like Explosive but it will remove entire sphere
# BedrockBreaker (custom: allow you to break a bedrock block)
# If you set "duration:" to "-1", it will give "INFINITE" potion effect.
# You can set the occurrence of enchantment.
# random: randomly occur based on the level
# always: explosion occur always.
# % : you can set the explicit % number as the maximum occurrence chance at the highest level of enchant.
alias: "&aSpeedDigging" #You can use your own name for enchant using alias.
duration: 200
amplifier: 2
price: 10
max: 10
occurrence: random
enchant_chance: 0.8 # chance for Enchantment Table
duration: -1
price: 10
max: 10
occurrence: random
price: 10
max: 10
occurrence: random
price: 10
max: 10
occurrence: random
permission: tokenenchant.explosive
price: 10
# the level of Explosive will be used as the radius of explosion.
max: 10
# radius
radius: 3
# you can set the multiplier to calculate the total amount of blocks to be exploded
# level 150 and multipler 2 = 150 x 2 blocks within the radius 3 will be exploded
multiplier: 2
# you can nominate the world, which prevents explosive
- plotworld
# you can turn on automatic pickup.
pickup: true
# you can turn on automatic smelting
smelt: true
# you can turn on/off explostion sound/visual effects
effect: true
# you can turn on/off explostion sound effects
sound: true
# You can set the occurrence of explosion.
# random: randomly occur based on the level
# always: explosion occur always.
occurrence: random
alias: "&4Excavation"
permission: tokenenchant.excavation
price: 10
# the level of Explosive will be used as the radius of excavation.
max: 10
# you can nominate the world, which prevents explosive
- plotworld
pickup: true
smelt: true
effect: true
sound: true
occurrence: random
# You can set the list of blocks exempt from explosiont.
# use this list to avoid your crates being exploded.
# AIR and BEDROCK are already exempted by defalt
# Supported Enchantment:
# Alldamage, Alldmg, Sharpness (Bukkit name: DAMAGE_ALL)
# Arthropodsdamage, Ardmg, Baneofarthropods (Bukkit name: DAMAGE_ARTHROPODS)
# Undeaddamage, Smite (Bukkit name: DAMAGE_UNDEAD)
# Digspeed, Efficiency (Bukkit name: DIG_SPEED)
# Durability, Dura, Unbreaking (Bukkit name: DURABILITY)
# Fireaspect, fire (Bukkit name: FIRE_ASPECT)
# Knockback (Bukkit name: KNOCKBACK)
# Blockslootbonus, Fortune (Bukkit name: LOOT_BONUS_BLOCKS)
# Mobslootbonus, Mobloot, Looting (Bukkit name: LOOT_BONUS_MOBS)
# Oxygen, Respiration (Bukkit name: OXYGEN)
# Protection, Prot (Bukkit name: PROTECTION_ENVIRONMENTAL)
# Explosionsprotection, Expprot, Blastprotection (Bukkit name: PROTECTION_EXPLOSIONS)
# Fallprotection, Fallprot, Featherfall, Featherfalling (Bukkit name: PROTECTION_FALL)
# Fireprotection, Fireprot (Bukkit name: PROTECTION_FIRE)
# Projectileprotection, Projprot (Bukkit name: PROTECTION_PROJECTILE)
# Silktouch (Bukkit name: SILK_TOUCH)
# Waterworker, Aquaaffinity (Bukkit name: WATER_WORKER)
# Firearrow, Flame (Bukkit name: ARROW_FIRE)
# Arrowdamage, Power (Bukkit name: ARROW_DAMAGE)
# Arrowknockback, Arrowkb, Punch (Bukkit name: ARROW_KNOCKBACK)
# Infinitearrows, Infarrows, Infinity (Bukkit name: ARROW_INFINITE)
price: 10
max: 10
price: 10
max: 10
price: 10
max: 10
price: 10
max: 10

- Explosive
- Excavation
- Sphered
- Disk
- Tile
- Silktouch
- Fortune

- Unbreaking
- Fortune
- Efficiency
- Unbreaking
- Fortune
- Efficiency
- Unbreaking
- Fortune
- Efficiency
- Unbreaking
- Fortune
- Efficiency

For Developers:

You can access TokenEnchant's token management methods through its public methods:

Code (Text):
import com.vk2gpz.tokenenchant.TokenEnchant;
public TokenEnchant getTokenEnchant() {
Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("TokenEnchant");
if ((plugin == null) || (!(plugin instances TokenEnchant))) {
return null;
return (TokenEnchant)plugin;
TokenEnchant te = getTokenEnchant();
double token = te.getTokens(player); //player can be OfflinePlayer
te.setTokens(player, amount); // current = amount
te.addTokens(player, amount); // current = current +amount
te.removeTokens(player, amount);// current = current - amount

String balance = te.getTokensInString(player); // token value in beautified string.
Total Views
4.11 star(s) 18 ratings

More files from FateKid

Share this resource

Latest reviews

Doesnt work please update
Upvote 0
Upvote 0
Se gode
Upvote 0
Thanks for sharing!
Upvote 0
Does, not work, errors in logs like crazy
Upvote 0
Upvote 0
noice try
Upvote 1
gotta rate to download
Upvote 0
Hoping this works wish me luck guys
Upvote 0
It does not work at all.
Upvote 0