001    package org.bukkit.event.block;
002    
003    import org.bukkit.block.Block;
004    import org.bukkit.block.BlockState;
005    import org.bukkit.event.Cancellable;
006    import org.bukkit.event.HandlerList;
007    
008    /**
009     * Called when a block fades, melts or disappears based on world conditions
010     * <p>
011     * Examples:
012     * <ul>
013     * <li>Snow melting due to being near a light source.
014     * <li>Ice melting due to being near a light source.
015     * <li>Fire burning out after time, without destroying fuel block.
016     * </ul>
017     * <p>
018     * If a Block Fade event is cancelled, the block will not fade, melt or
019     * disappear.
020     */
021    public class BlockFadeEvent extends BlockEvent implements Cancellable {
022        private static final HandlerList handlers = new HandlerList();
023        private boolean cancelled;
024        private final BlockState newState;
025    
026        public BlockFadeEvent(final Block block, final BlockState newState) {
027            super(block);
028            this.newState = newState;
029            this.cancelled = false;
030        }
031    
032        /**
033         * Gets the state of the block that will be fading, melting or
034         * disappearing.
035         *
036         * @return The block state of the block that will be fading, melting or
037         *     disappearing
038         */
039        public BlockState getNewState() {
040            return newState;
041        }
042    
043        public boolean isCancelled() {
044            return cancelled;
045        }
046    
047        public void setCancelled(boolean cancel) {
048            this.cancelled = cancel;
049        }
050    
051        @Override
052        public HandlerList getHandlers() {
053            return handlers;
054        }
055    
056        public static HandlerList getHandlerList() {
057            return handlers;
058        }
059    }