The official home page of TokenEnchant can be found here

NOTE: if you're using EssentialsX on pre 1.13 server (such as 1.8.8), please use at least this version or newer
NOTE: if you're using Java 15 or above, install JSEngine plugin.  It will provide a JavaScript processing engine missing in Java 15 or above.

If you're using explosive-like custom enchants (such as ExplosiveJackHammerLaser, etc.), we strongly suggest you to use AutoPickup to process TEBlockExplode event. It will provide much better performance and will reduce the lag from explosions.

Before you upgrade your TE from pre v18 to v18, please read this!!!!


The 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).

All custom enchantments are properly integrated into Minecraft's native Enchantment system, hence your custom enchantments will be available in various native mechanics without any special treatment by TokenEnchant :
  • Enchantment Table,
  • Anvil,
  • Villagers,
  • Dungeon chests, etc.

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 the cost of enchantment at a different level will increase.  You can provide your own costing formula in CostFormulae.js using JavaScript function.
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.

When you merging enchantments using an anvil on 1.8.x server, name change won't be picked up.

Command Alias:
  • With new Token Alias Commands, you can use external plugins like Backpack plugin and use Tokens to give those features to players
Sample Config:  The sample config (default config.yml) can be found at here.

Test Server: 

Supported Enchantments / PotionEffects (some are free and some are premium or sold separately):

  Vanilla Enchantments: (39 types)
  Vanilla PotionEffects: (11 types)
Known Custom Enchantments (287 currently registered)

Supported region protection plugins:
  • ASkyBlock
  • BSkyBlock
  • Factions (other forks like SavageFactions should use this keyword)
  • FactionsUUID
  • Feudal
  • GriefPrevention,
  • IridiumSkyblock
  • Kingdoms
  • LegacyFactions
  • NovaGuilds
  • PlotMe
  • PlotSquared (v3, v4, and v5)
  • Plotz
  • PreciousStone
  • RedProtect
  • Residence
  • Towny
  • uSkyBlock
  • WorldGuard (v6 and v7)

Commands execution upon Enchantment activation:
As of v22.0.0, all custom enchants can now have:
        # '!' -> console, '>' -> op, '@' -> player
          - "chance:0.4;!tokenenchant add %player% 3;msg %player% &aLucky Block! <nl>&aYou received 3 tokens!"
          - "chance:0.03;!tokenenchant add %player% 1;msg %player% &aLucky Block! <nl>&aYou received one token!"
          # if min max are specified, you can use %amount% placeholder int the command.
          - "chance:0.1;min:5;max:10;!tokenenchant add %player% %amount%;msg %player% &aLucky Block! <nl>&aYou received %amount% token!"
          - ...

Sign Usage:
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, the placeholder "{ench_cost}" will be used to automatically display an appropriate cost.
  • 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 the exchange rate placeholder "{ex_rate}" will be replaced by the exchange rate you defined in the config.yml.
  • to place "ExpExchange" sign, you need to write !ExpExch! in the 1st line and the exp exchange rate placeholder "{exp_rate}" will be replaced by the EXP exchange rate you defined in the config.yml.
  • 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