Class 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 Detail

      • 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
    • Constructor Detail

      • Enchantment

        public Enchantment​(@NotNull
                           NamespacedKey key)
    • Method Detail

      • 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
      • hashCode

        public int hashCode()
        Overrides:
        hashCode 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