Class Enchantment

java.lang.Object
org.bukkit.enchantments.Enchantment
All Implemented Interfaces:
Keyed
Direct Known Subclasses:
EnchantmentWrapper

public abstract class Enchantment extends Object implements Keyed
The various type of enchantments that may be added to armour or weapons
  • 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

  • Method Details

    • getKey

      @NotNull public 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 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 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

      @Deprecated public abstract boolean isCursed()
      Deprecated.
      cursed enchantments are no longer special. Will return true only for BINDING_CURSE and VANISHING_CURSE.
      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 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 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
    • 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 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 Enchantment getByKey(@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 Enchantment getByName(@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 Enchantment[] values()
      Gets an array of all the registered Enchantments
      Returns:
      Array of enchantments