TokenEnchant
TokenEnchant
For Plugin Support (bug report, feature request, etc), please use this site.

NOTE: version 5.x.x contains a new option for explosive enchants. If you specify "use_explode_event: true" under explosive enchants such as "Explosive", "Excavation", "Sphered", "Disk", and "Tile", it will not generate BlockBreakEvent for each exploded blocks result in much better performance. However, this option might not work with other plugins like AutoSell, EZBlocks if they do not support this new BlockExplodeEvent.

Note: "invalid_in_region:" option is not appropriate for some custom enchantments. Please check the appropriateness of the use of "invalid_in_region:". This is for the performance reason. In order to make this option work for all effect, the plugin would need to keep track of all player movement, which is usually very costly operation.

NOTE: To use full custom naming for vanilla enchantment, you need ProtocolLib plugin.

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:

  • testserver.vk2gpz.com.
Supported Enchantments / PotionEffects:

Commands:
  • /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.
Aliases:
  • tokenenchant, te, token
Permissions:
  • 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.

Installation:

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.

Dependency:
WorldGuard

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

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
  • 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
1a2d469de1594688bf514751a17f05c6-png.12123


2014-12-09_16-53-35-png.12027


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):

# This is a template config file
# define your parameter and its value like:
ErrorMessage: "&c [TE] : Some error occured."
#
# 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

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}"
#
TokenItem: MAGMA_CREAM
TokenItemName: "&aTokenItem"
TokenItemLore: "&bHold it in your hand and\n&bRight-Click to redeem &eTokens"

#
EnchantmentLorePrefix: "&r&7"

Messages:
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."
EnchantSuccess: "&a[TE] &e+ %addedlevel% &d%enchant% &aenchantment level. %token% tokens have been deducted."
EnchantSuccess:
msg: "&a[TE] &e+ %addedlevel% &d%enchant% &aenchantment level. %token% tokens have been deducted."
sound: ENTITY_PLAYER_LEVELUP # pre 1.9, use 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 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!"
CannotUseMoreEnchant:
msg: "&c[TE] You cannot use an item with enchants more than &e%max%&c."
sound: ITEM_BREAK

#
# 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 enchantment.level.xxx 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

# 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

# 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: "essentials.fly"
#
TokenFormula:
# 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.
Constant:
Linear:
Exponential:
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.
Commands:
# example of giving slot 9 chestbackpack to a user (ChestBackpack plugin)
backpack9:
permission:
- my.permission.for.backpack9
price: 30
default:
- "!pex user %p add chestbackpack.slots.9"
# example of giving slot 18 chestbackpack to a user (ChestBackpack plugin)
backpack18:
permission:
- my.permission.for.backpack18
price: 60
default:
- "!pex user %p add chestbackpack.slots.18"
# example of allowing a player to set his prefix using PermissionsEx command.
setprefix:
permission:
- my.permission.for.setprefix
price: 160
default:
- "!pex user %p prefix %1"
letmefly:
permission:
- my.permission.for.letmefly
price: 160
default:
- ">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.
#
Potions:
Haste:
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
Speed:
duration: -1
price: 10
max: 10
occurrence: random
Nightvision:
price: 10
max: 10
occurrence: random
Jump:
price: 10
max: 10
occurrence: random
Explosive:
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
invalid_in_world:
- 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
Excavation:
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
invalid_in_world:
- 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
exemptions:
- ENDER_CHEST
- GLOWSTONE
- LADDER
- STONE_PLATE
- "STAINED_GLASS:11"
#
# 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)
#
Enchants:
Fortune:
price: 10
max: 10
Silktouch:
price: 10
max: 10
Efficiency:
price: 10
max: 10
Unbreaking:
price: 10
max: 10

Conflicts:
1:
- Explosive
- Excavation
- Sphered
- Disk
- Tile
2:
- Silktouch
- Fortune

Items:
GOLD_PICKAXE:
- Unbreaking
- Fortune
- Efficiency
IRON_PICKAXE:
- Unbreaking
- Fortune
- Efficiency
STONE_PICKAXE:
- Unbreaking
- Fortune
- Efficiency
WOOD_PICKAXE:
- 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 instance TokenEnchant))) {
return null;
}
return (TokenEnchant)plugin;
}
....
TokenEnchant te = getTokenEnchant();
....
int 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
...
License: Please read this prior to your purchase.

Similar resources

MergedSpawner (SilkSpawner/TokenEnchant/MergedMob etc support included) K
Stack multiple mob spawner (of the same kind) into just one spawner.
0.00 star(s) 0 ratings
Downloads
762
Updated
TEUpgrades - GUI add-on for TokenEnchant [1.8 - 1.16]
0.00 star(s) 0 ratings
Downloads
147
Updated
TokenEnchant Ragnar Lothbrok
Over 230 of fully customisable enchants! MUST HAVE plugin for Prison/Faction/PvP Server!
1.00 star(s) 2 ratings
Downloads
890
Updated
BlackSpigot General Chat
Rules Help Users
    R @ RZ__: @devmreza contact me on discord: RZM_RMX
    Top