Class PotionEffect

java.lang.Object
org.bukkit.potion.PotionEffect
All Implemented Interfaces:
ConfigurationSerializable

public class PotionEffect extends Object implements ConfigurationSerializable
Represents a potion effect, that can be added to a LivingEntity. A potion effect has a duration that it will last for, an amplifier that will enhance its effects, and a PotionEffectType, that represents its effect on an entity.
Since:
1.1.0
  • Field Details

    • INFINITE_DURATION

      public static final int INFINITE_DURATION
      A constant denoting infinite potion duration.
      Since:
      1.19.4
      See Also:
  • Constructor Details

  • Method Details

    • withType

      Returns a new potion effect with the provided type and this effect's duration, amplifier, ambient, particles, and icon.
      Parameters:
      type - effect type
      Returns:
      a new potion effect with the provided type
      Since:
      1.12.2
    • withDuration

      @NotNull public @NotNull PotionEffect withDuration(int duration)
      Returns a new potion effect with the provided duration and this effect's type, amplifier, ambient, particles, and icon.
      Parameters:
      duration - measured in ticks, see getDuration()
      Returns:
      a new potion effect with the provided duration
      Since:
      1.12.2
    • withAmplifier

      @NotNull public @NotNull PotionEffect withAmplifier(int amplifier)
      Returns a new potion effect with the provided amplifier and this effect's type, duration, ambient, particles, and icon.
      Parameters:
      amplifier - the amplifier, see getAmplifier()
      Returns:
      a new potion effect with the provided amplifier
      Since:
      1.12.2
    • withAmbient

      @NotNull public @NotNull PotionEffect withAmbient(boolean ambient)
      Returns a new potion effect with the provided ambient and this effect's type, duration, amplifier, particles, and icon.
      Parameters:
      ambient - the ambient status, see isAmbient()
      Returns:
      a new potion effect with the provided ambient
      Since:
      1.12.2
    • withParticles

      @NotNull public @NotNull PotionEffect withParticles(boolean particles)
      Returns a new potion effect with the provided particles and this effect's type, duration, amplifier, ambient, and icon.
      Parameters:
      particles - the particle status, see hasParticles()
      Returns:
      a new potion effect with the provided particles
      Since:
      1.12.2
    • withIcon

      @NotNull public @NotNull PotionEffect withIcon(boolean icon)
      Returns a new potion effect with the provided icon and this effect's type, duration, amplifier, ambient, and particles.
      Parameters:
      icon - the icon status, see hasIcon()
      Returns:
      a new potion effect with the provided icon
      Since:
      1.13
    • getHiddenPotionEffect

      @Nullable public @Nullable PotionEffect getHiddenPotionEffect()
      Returns the PotionEffect that will become active after the current PotionEffect has run out.

      Note: This value is only applicable to type applied to living entities.

      Returns:
      The hidden PotionEffect.
      Since:
      1.20.4
    • serialize

      @NotNull public @NotNull Map<String,Object> serialize()
      Description copied from interface: ConfigurationSerializable
      Creates a Map representation of this class.

      This class must provide a method to restore this class, as defined in the ConfigurationSerializable interface javadocs. nb: It is not intended for this method to be called directly, this will be called by the ConfigurationSerialization class.

      Specified by:
      serialize in interface ConfigurationSerializable
      Returns:
      Map containing the current state of this class
      Since:
      1.4.5
    • apply

      public boolean apply(@NotNull @NotNull LivingEntity entity)
      Attempts to add the effect represented by this object to the given LivingEntity.

      Note: getHiddenPotionEffect() is ignored when adding the effect to the entity.

      Parameters:
      entity - The entity to add this effect to
      Returns:
      Whether the effect could be added
      Since:
      1.1.0
      See Also:
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • getAmplifier

      public int getAmplifier()
      Returns the amplifier of this effect. A higher amplifier means the potion effect happens more often over its duration and in some cases has more effect on its target.
      Returns:
      The effect amplifier
      Since:
      1.1.0
    • getDuration

      public int getDuration()
      Returns the duration (in ticks) that this effect will run for when applied to a LivingEntity.
      Returns:
      The duration of the effect, or -1 if this effect is infinite
      Since:
      1.1.0
      See Also:
    • isInfinite

      public boolean isInfinite()
      Returns whether or not this potion effect has an infinite duration. Potion effects with infinite durations will display an infinite symbol and never expire unless manually removed.
      Returns:
      whether this duration is infinite or not
      Since:
      1.19.4
    • isShorterThan

      public boolean isShorterThan(@NotNull @NotNull PotionEffect other)
      Returns whether or not this potion effect has a shorter duration than the provided potion effect.

      An infinite duration is considered longer than non-infinite durations. If both potion effects have infinite durations, then neither is shorter than the other and this method will return false.

      Parameters:
      other - the other effect
      Returns:
      true if this effect is shorter than the other, false if longer or equal
      Since:
      1.19.4
    • getType

      Returns the PotionEffectType of this effect.
      Returns:
      The potion type of this effect
      Since:
      1.1.0
    • isAmbient

      public boolean isAmbient()
      Makes potion effect produce more, translucent, particles.
      Returns:
      if this effect is ambient
      Since:
      1.4.5
    • hasParticles

      public boolean hasParticles()
      Returns:
      whether this effect has particles or not
      Since:
      1.8
    • getColor

      @Deprecated(since="1.13") @Nullable @Contract("-> null") public @Nullable Color getColor()
      Deprecated.
      color is not part of potion effects
      Returns:
      color of this potion's particles. May be null if the potion has no particles or defined color.
      Since:
      1.9.4
    • hasIcon

      public boolean hasIcon()
      Returns:
      whether this effect has an icon or not
      Since:
      1.13
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object