001/*
002 * Trident - A Multithreaded Server Alternative
003 * Copyright 2014 The TridentSDK Team
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *    http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package net.tridentsdk.meta.item;
018
019import java.util.List;
020
021import net.tridentsdk.base.Color;
022
023public interface ExplosionMeta {
024
025    public static enum ExplosionType {
026        /**
027         * Represents a small firework explosion.
028         */
029        SMALL,
030        /**
031         * Represents a large firework explosion.
032         */
033        LARGE,
034        /**
035         * Represents a star-shaped firework explosion.
036         */
037        STAR,
038        /**
039         * Represents a creeper-shaped firework explosion.
040         */
041        CREEPER,
042        /**
043         * Represents a burst-shaped firework explosion.
044         */
045        BURST,
046        /**
047         * <p>Represents an unknown firework explosion.</p>
048         *
049         * <p><em>ID is preserved in case of future Minecraft effects.</em></p>
050         */
051        UNKNOWN
052    }
053
054    /**
055     * Gets the main colors of this Explosion.
056     *
057     * @return The main colors.
058     */
059    List<Color> colors();
060
061    /**
062     * Gets the fade colors of this Explosion.
063     *
064     * @return The fade colors.
065     */
066    List<Color> fadeColors();
067
068    /**
069     * Gets this Explosion's type.
070     *
071     * @return The type.
072     */
073    ExplosionType type();
074
075    /**
076     * Gets whether or not this explosion has the Flicker effect applied to it.
077     *
078     * @return True if Flicker is enabled; false otherwise.
079     */
080    boolean isFlicker();
081
082    /**
083     * Gets whether or not this explosion has the Trail effect applied to it.
084     *
085     * @return True if Trail is enabled; false otherwise.
086     */
087    boolean isTrail();
088}