All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.inventory.meta.FireworkMeta Maven / Gradle / Ivy

package org.bukkit.inventory.meta;

import org.bukkit.FireworkEffect;
import org.bukkit.Material;

import java.util.List;

/**
 * Represents a {@link Material#FIREWORK} and its effects.
 */
public interface FireworkMeta extends ItemMeta {

  /**
   * Add another effect to this firework.
   *
   * @param effect The firework effect to add
   * @throws IllegalArgumentException If effect is null
   */
  void addEffect(FireworkEffect effect) throws IllegalArgumentException;

  /**
   * Add several effects to this firework.
   *
   * @param effects The firework effects to add
   * @throws IllegalArgumentException If effects is null
   * @throws IllegalArgumentException If any effect is null (may be thrown
   *                                  after changes have occurred)
   */
  void addEffects(FireworkEffect... effects) throws IllegalArgumentException;

  /**
   * Add several firework effects to this firework.
   *
   * @param effects An iterable object whose iterator yields the desired
   *                firework effects
   * @throws IllegalArgumentException If effects is null
   * @throws IllegalArgumentException If any effect is null (may be thrown
   *                                  after changes have occurred)
   */
  void addEffects(Iterable effects) throws IllegalArgumentException;

  /**
   * Get the effects in this firework.
   *
   * @return An immutable list of the firework effects
   */
  List getEffects();

  /**
   * Get the number of effects in this firework.
   *
   * @return The number of effects
   */
  int getEffectsSize();

  /**
   * Remove an effect from this firework.
   *
   * @param index The index of the effect to remove
   * @throws IndexOutOfBoundsException If index {@literal < 0 or index >} {@link
   *                                   #getEffectsSize()}
   */
  void removeEffect(int index) throws IndexOutOfBoundsException;

  /**
   * Remove all effects from this firework.
   */
  void clearEffects();

  /**
   * Get whether this firework has any effects.
   *
   * @return true if it has effects, false if there are no effects
   */
  boolean hasEffects();

  /**
   * Gets the approximate height the firework will fly.
   *
   * @return approximate flight height of the firework.
   */
  int getPower();

  /**
   * Sets the approximate power of the firework. Each level of power is half
   * a second of flight time.
   *
   * @param power the power of the firework, from 0-128
   * @throws IllegalArgumentException if {@literal height<0 or height>128}
   */
  void setPower(int power) throws IllegalArgumentException;

  FireworkMeta clone();
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy