Package org.bukkit.enchantments

# Class Enchantment

java.lang.Object
org.bukkit.enchantments.Enchantment

All Implemented Interfaces:
  `Translatable`, `Keyed`

Direct Known Subclasses:
  `EnchantmentWrapper`

public abstract class Enchantment extends Object implements Keyed, Translatable
The various type of enchantments that may be added to armour or weapons

## Field Summary

Fields
Modifier and Type
Field
Description
`static final Enchantment`
`ARROW_DAMAGE`
Provides extra damage when shooting arrows from bows
`static final Enchantment`
`ARROW_FIRE`
Sets entities on fire when hit by arrows shot from a bow
`static final Enchantment`
`ARROW_INFINITE`
Provides infinite arrows when shooting a bow
`static final Enchantment`
`ARROW_KNOCKBACK`
Provides a knockback when an entity is hit by an arrow from a bow
`static final Enchantment`
`BINDING_CURSE`
Item cannot be removed
`static final Enchantment`
`CHANNELING`
Strikes lightning when a mob is hit with a trident if conditions are stormy
`static final Enchantment`
`DAMAGE_ALL`
Increases damage against all targets
`static final Enchantment`
`DAMAGE_ARTHROPODS`
Increases damage against arthropod targets
`static final Enchantment`
`DAMAGE_UNDEAD`
Increases damage against undead targets
`static final Enchantment`
`DEPTH_STRIDER`
Increases walking speed while in water
`static final Enchantment`
`DIG_SPEED`
Increases the rate at which you mine/dig
`static final Enchantment`
`DURABILITY`
Decreases the rate at which a tool looses durability
`static final Enchantment`
`FIRE_ASPECT`
When attacking a target, has a chance to set them on fire
`static final Enchantment`
`FROST_WALKER`
Freezes any still water adjacent to ice / frost which player is walking on
`static final Enchantment`
`IMPALING`
Deals more damage to mobs that live in the ocean
`static final Enchantment`
`KNOCKBACK`
All damage to other targets will knock them back when hit
`static final Enchantment`
`LOOT_BONUS_BLOCKS`
Provides a chance of gaining extra loot when destroying blocks
`static final Enchantment`
`LOOT_BONUS_MOBS`
Provides a chance of gaining extra loot when killing monsters
`static final Enchantment`
`LOYALTY`
Causes a thrown trident to return to the player who threw it
`static final Enchantment`
`LUCK`
Decreases odds of catching worthless junk
`static final Enchantment`
`LURE`
Increases rate of fish biting your hook
`static final Enchantment`
`MENDING`
Allows mending the item using experience orbs
`static final Enchantment`
`MULTISHOT`
Shoot multiple arrows from crossbows
`static final Enchantment`
`OXYGEN`
Decreases the rate of air loss whilst underwater
`static final Enchantment`
`PIERCING`
Crossbow projectiles pierce entities
`static final Enchantment`
`PROTECTION_ENVIRONMENTAL`
Provides protection against environmental damage
`static final Enchantment`
`PROTECTION_EXPLOSIONS`
Provides protection against explosive damage
`static final Enchantment`
`PROTECTION_FALL`
Provides protection against fall damage
`static final Enchantment`
`PROTECTION_FIRE`
Provides protection against fire damage
`static final Enchantment`
`PROTECTION_PROJECTILE`
Provides protection against projectile damage
`static final Enchantment`
`QUICK_CHARGE`
Charges crossbows quickly
`static final Enchantment`
`RIPTIDE`
When it is rainy, launches the player in the direction their trident is thrown
`static final Enchantment`
`SILK_TOUCH`
Allows blocks to drop themselves instead of fragments (for example, stone instead of cobblestone)
`static final Enchantment`
`SOUL_SPEED`
Walk quicker on soul blocks
`static final Enchantment`
`SWEEPING_EDGE`
Increases damage against targets when using a sweep attack
`static final Enchantment`
`THORNS`
Damages the attacker
`static final Enchantment`
`VANISHING_CURSE`
Item disappears instead of dropping
`static final Enchantment`
`WATER_WORKER`
Increases the speed at which a player may mine underwater

## Constructor Summary

Constructors
Constructor
Description
`Enchantment(@NotNull NamespacedKey key)`

## Method Summary

Modifier and Type
Method
Description
`abstract boolean`
`canEnchantItem(@NotNull ItemStack item)`
Checks if this Enchantment may be applied to the given `ItemStack`.
`abstract boolean`
`conflictsWith(@NotNull Enchantment other)`
Check if this enchantment conflicts with another enchantment.
`abstract Component`
`displayName(int level)`
Get the name of the enchantment with its applied level.
`boolean`
`equals(Object obj)`
`abstract Set<EquipmentSlot>`
`getActiveSlots()`
Gets the equipment slots where this enchantment is considered "active".
`static @Nullable Enchantment`
`getByKey(@Nullable NamespacedKey key)`
Gets the Enchantment at the specified key
`static @Nullable Enchantment`
`getByName(@Nullable String name)`
Deprecated.
enchantments are badly named, use `getByKey(org.bukkit.NamespacedKey)`.
`abstract float`
`getDamageIncrease(int level, EntityCategory entityCategory)`
Gets the damage increase as a result of the level and entity category specified
`abstract @NotNull EnchantmentTarget`
`getItemTarget()`
Gets the type of `ItemStack` that may fit this Enchantment.
`@NotNull NamespacedKey`
`getKey()`
Return the namespaced identifier for this object.
`abstract int`
`getMaxLevel()`
Gets the maximum level that this Enchantment may become.
`abstract @NotNull String`
`getName()`
Deprecated.
enchantments are badly named, use `getKey()`.
`abstract EnchantmentRarity`
`getRarity()`
Gets the rarity of this enchantment.
`abstract int`
`getStartLevel()`
Gets the level that this Enchantment should start at
`int`
`hashCode()`
`static boolean`
`isAcceptingRegistrations()`
Checks if this is accepting Enchantment registrations.
`abstract boolean`
`isCursed()`
Checks if this enchantment is a cursed enchantment
Cursed enchantments are found the same way treasure enchantments are
`abstract boolean`
`isDiscoverable()`
Checks if this enchantment can be found in an enchanting table or use to enchant items generated by loot tables.
`abstract boolean`
`isTradeable()`
Checks if this enchantment can be found in villager trades.
`abstract boolean`
`isTreasure()`
Checks if this enchantment is a treasure enchantment.
`static void`
`registerEnchantment(@NotNull Enchantment enchantment)`
Registers an enchantment with the given ID and object.
`static void`
`stopAcceptingRegistrations()`
Stops accepting any enchantment registrations
`String`
`toString()`
`static @NotNull Enchantment[]`
`values()`
Gets an array of all the registered `Enchantment`s

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface net.kyori.adventure.translation.Translatable

`translationKey`

## Field Details

### PROTECTION_ENVIRONMENTAL

public static final Enchantment PROTECTION_ENVIRONMENTAL
Provides protection against environmental damage

### PROTECTION_FIRE

public static final Enchantment PROTECTION_FIRE
Provides protection against fire damage

### PROTECTION_FALL

public static final Enchantment PROTECTION_FALL
Provides protection against fall damage

### PROTECTION_EXPLOSIONS

public static final Enchantment PROTECTION_EXPLOSIONS
Provides protection against explosive damage

### PROTECTION_PROJECTILE

public static final Enchantment PROTECTION_PROJECTILE
Provides protection against projectile damage

### OXYGEN

public static final Enchantment OXYGEN
Decreases the rate of air loss whilst underwater

### WATER_WORKER

public static final Enchantment WATER_WORKER
Increases the speed at which a player may mine underwater

### THORNS

public static final Enchantment THORNS
Damages the attacker

### DEPTH_STRIDER

public static final Enchantment DEPTH_STRIDER
Increases walking speed while in water

### FROST_WALKER

public static final Enchantment FROST_WALKER
Freezes any still water adjacent to ice / frost which player is walking on

### BINDING_CURSE

public static final Enchantment BINDING_CURSE
Item cannot be removed

### DAMAGE_ALL

public static final Enchantment DAMAGE_ALL
Increases damage against all targets

### DAMAGE_UNDEAD

public static final Enchantment DAMAGE_UNDEAD
Increases damage against undead targets

### DAMAGE_ARTHROPODS

public static final Enchantment DAMAGE_ARTHROPODS
Increases damage against arthropod targets

### KNOCKBACK

public static final Enchantment KNOCKBACK
All damage to other targets will knock them back when hit

### FIRE_ASPECT

public static final Enchantment FIRE_ASPECT
When attacking a target, has a chance to set them on fire

### LOOT_BONUS_MOBS

public static final Enchantment LOOT_BONUS_MOBS
Provides a chance of gaining extra loot when killing monsters

### SWEEPING_EDGE

public static final Enchantment SWEEPING_EDGE
Increases damage against targets when using a sweep attack

### DIG_SPEED

public static final Enchantment DIG_SPEED
Increases the rate at which you mine/dig

### SILK_TOUCH

public static final Enchantment SILK_TOUCH
Allows blocks to drop themselves instead of fragments (for example, stone instead of cobblestone)

### DURABILITY

public static final Enchantment DURABILITY
Decreases the rate at which a tool looses durability

### LOOT_BONUS_BLOCKS

public static final Enchantment LOOT_BONUS_BLOCKS
Provides a chance of gaining extra loot when destroying blocks

### ARROW_DAMAGE

public static final Enchantment ARROW_DAMAGE
Provides extra damage when shooting arrows from bows

### ARROW_KNOCKBACK

public static final Enchantment ARROW_KNOCKBACK
Provides a knockback when an entity is hit by an arrow from a bow

### ARROW_FIRE

public static final Enchantment ARROW_FIRE
Sets entities on fire when hit by arrows shot from a bow

### ARROW_INFINITE

public static final Enchantment ARROW_INFINITE
Provides infinite arrows when shooting a bow

### LUCK

public static final Enchantment LUCK
Decreases odds of catching worthless junk

### LURE

public static final Enchantment LURE
Increases rate of fish biting your hook

### LOYALTY

public static final Enchantment LOYALTY
Causes a thrown trident to return to the player who threw it

### IMPALING

public static final Enchantment IMPALING
Deals more damage to mobs that live in the ocean

### RIPTIDE

public static final Enchantment RIPTIDE
When it is rainy, launches the player in the direction their trident is thrown

### CHANNELING

public static final Enchantment CHANNELING
Strikes lightning when a mob is hit with a trident if conditions are stormy

### MULTISHOT

public static final Enchantment MULTISHOT
Shoot multiple arrows from crossbows

### QUICK_CHARGE

public static final Enchantment QUICK_CHARGE
Charges crossbows quickly

### PIERCING

public static final Enchantment PIERCING
Crossbow projectiles pierce entities

### MENDING

public static final Enchantment MENDING
Allows mending the item using experience orbs

### VANISHING_CURSE

public static final Enchantment VANISHING_CURSE
Item disappears instead of dropping

### SOUL_SPEED

public static final Enchantment SOUL_SPEED
Walk quicker on soul blocks

## Constructor Details

### Enchantment

public Enchantment(@NotNull @NotNull NamespacedKey key)

## Method Details

### getKey

@NotNull public @NotNull NamespacedKey getKey()
Description copied from interface: `Keyed`
Return the namespaced identifier for this object.

Specified by:
  `getKey` in interface `Keyed`
Returns:
  this object's key

### getName

@NotNull @Deprecated public abstract @NotNull String getName()
Deprecated.
enchantments are badly named, use `getKey()`.
Gets the unique name of this enchantment

Returns:
  Unique name

### getMaxLevel

public abstract int getMaxLevel()
Gets the maximum level that this Enchantment may become.

Returns:
  Maximum level of the Enchantment

### getStartLevel

public abstract int getStartLevel()
Gets the level that this Enchantment should start at

Returns:
  Starting level of the Enchantment

### getItemTarget

@NotNull public abstract @NotNull EnchantmentTarget getItemTarget()
Gets the type of `ItemStack` that may fit this Enchantment.

Returns:
  Target type of the Enchantment

### isTreasure

public abstract boolean isTreasure()
Checks if this enchantment is a treasure enchantment.
Treasure enchantments can only be received via looting, trading, or fishing.

Returns:
  true if the enchantment is a treasure enchantment

### isCursed

public abstract boolean isCursed()
Checks if this enchantment is a cursed enchantment
Cursed enchantments are found the same way treasure enchantments are

Returns:
  true if the enchantment is cursed

### conflictsWith

public abstract boolean conflictsWith(@NotNull @NotNull Enchantment other)
Check if this enchantment conflicts with another enchantment.

Parameters:
  `other` - The enchantment to check against
Returns:
  True if there is a conflict.

### canEnchantItem

public abstract boolean canEnchantItem(@NotNull @NotNull ItemStack item)
Checks if this Enchantment may be applied to the given `ItemStack`.

This does not check if it conflicts with any enchantments already applied to the item.

Parameters:
  `item` - Item to test
Returns:
  True if the enchantment may be applied, otherwise False

### displayName

@NotNull public abstract Component displayName(int level)
Get the name of the enchantment with its applied level.

If the given `level` is either less than the `getStartLevel()` or greater than the `getMaxLevel()`, the level may not be shown in the numeral format one may otherwise expect.

Parameters:
  `level` - the level of the enchantment to show
Returns:
  the name of the enchantment with `level` applied

### isTradeable

public abstract boolean isTradeable()
Checks if this enchantment can be found in villager trades.

Returns:
  true if the enchantment can be found in trades

### isDiscoverable

public abstract boolean isDiscoverable()
Checks if this enchantment can be found in an enchanting table or use to enchant items generated by loot tables.

Returns:
  true if the enchantment can be found in a table or by loot tables

### getRarity

@NotNull public abstract EnchantmentRarity getRarity()
Gets the rarity of this enchantment.

Returns:
  the rarity

### getDamageIncrease

public abstract float getDamageIncrease(int level, @NotNull EntityCategory entityCategory)
Gets the damage increase as a result of the level and entity category specified

Parameters:
  `level` - the level of enchantment
  `entityCategory` - the category of entity
Returns:
  the damage increase

### getActiveSlots

@NotNull public abstract Set<EquipmentSlot> getActiveSlots()
Gets the equipment slots where this enchantment is considered "active".

Returns:
  the equipment slots

### equals

public boolean equals(Object obj)

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### registerEnchantment

public static void registerEnchantment(@NotNull @NotNull Enchantment enchantment)
Registers an enchantment with the given ID and object.

Generally not to be used from within a plugin.

Parameters:
  `enchantment` - Enchantment to register

### isAcceptingRegistrations

public static boolean isAcceptingRegistrations()
Checks if this is accepting Enchantment registrations.

Returns:
  True if the server Implementation may add enchantments

### stopAcceptingRegistrations

public static void stopAcceptingRegistrations()
Stops accepting any enchantment registrations

### getByKey

@Contract("null -> null") @Nullable public static @Nullable Enchantment getByKey(@Nullable @Nullable NamespacedKey key)
Gets the Enchantment at the specified key

Parameters:
  `key` - key to fetch
Returns:
  Resulting Enchantment, or null if not found

### getByName

@Deprecated @Contract("null -> null") @Nullable public static @Nullable Enchantment getByName(@Nullable @Nullable String name)
Deprecated.
enchantments are badly named, use `getByKey(org.bukkit.NamespacedKey)`.
Gets the Enchantment at the specified name

Parameters:
  `name` - Name to fetch
Returns:
  Resulting Enchantment, or null if not found

### values

@NotNull public static @NotNull Enchantment[] values()
Gets an array of all the registered `Enchantment`s

Returns:
  Array of enchantments