001 package org.bukkit.inventory.meta; 002 003 import java.util.List; 004 005 import org.bukkit.FireworkEffect; 006 import org.bukkit.Material; 007 008 /** 009 * Represents a {@link Material#FIREWORK} and its effects. 010 */ 011 public interface FireworkMeta extends ItemMeta { 012 013 /** 014 * Add another effect to this firework. 015 * 016 * @param effect The firework effect to add 017 * @throws IllegalArgumentException If effect is null 018 */ 019 void addEffect(FireworkEffect effect) throws IllegalArgumentException; 020 021 /** 022 * Add several effects to this firework. 023 * 024 * @param effects The firework effects to add 025 * @throws IllegalArgumentException If effects is null 026 * @throws IllegalArgumentException If any effect is null (may be thrown 027 * after changes have occurred) 028 */ 029 void addEffects(FireworkEffect...effects) throws IllegalArgumentException; 030 031 /** 032 * Add several firework effects to this firework. 033 * 034 * @param effects An iterable object whose iterator yields the desired 035 * firework effects 036 * @throws IllegalArgumentException If effects is null 037 * @throws IllegalArgumentException If any effect is null (may be thrown 038 * after changes have occurred) 039 */ 040 void addEffects(Iterable<FireworkEffect> effects) throws IllegalArgumentException; 041 042 /** 043 * Get the effects in this firework. 044 * 045 * @return An immutable list of the firework effects 046 */ 047 List<FireworkEffect> getEffects(); 048 049 /** 050 * Get the number of effects in this firework. 051 * 052 * @return The number of effects 053 */ 054 int getEffectsSize(); 055 056 /** 057 * Remove an effect from this firework. 058 * 059 * @param index The index of the effect to remove 060 * @throws IndexOutOfBoundsException If index < 0 or index > {@link 061 * #getEffectsSize()} 062 */ 063 void removeEffect(int index) throws IndexOutOfBoundsException; 064 065 /** 066 * Remove all effects from this firework. 067 */ 068 void clearEffects(); 069 070 /** 071 * Get whether this firework has any effects. 072 * 073 * @return true if it has effects, false if there are no effects 074 */ 075 boolean hasEffects(); 076 077 /** 078 * Gets the approximate height the firework will fly. 079 * 080 * @return approximate flight height of the firework. 081 */ 082 int getPower(); 083 084 /** 085 * Sets the approximate power of the firework. Each level of power is half 086 * a second of flight time. 087 * 088 * @param power the power of the firework, from 0-128 089 * @throws IllegalArgumentException if height<0 or height>128 090 */ 091 void setPower(int power) throws IllegalArgumentException; 092 093 FireworkMeta clone(); 094 }