001    package org.bukkit.event.hanging;
002    
003    import org.bukkit.entity.Hanging;
004    import org.bukkit.event.Cancellable;
005    import org.bukkit.event.HandlerList;
006    
007    /**
008     * Triggered when a hanging entity is removed
009     */
010    public class HangingBreakEvent extends HangingEvent implements Cancellable {
011        private static final HandlerList handlers = new HandlerList();
012        private boolean cancelled;
013        private final HangingBreakEvent.RemoveCause cause;
014    
015        public HangingBreakEvent(final Hanging hanging, final HangingBreakEvent.RemoveCause cause) {
016            super(hanging);
017            this.cause = cause;
018        }
019    
020        /**
021         * Gets the cause for the hanging entity's removal
022         *
023         * @return the RemoveCause for the hanging entity's removal
024         */
025        public HangingBreakEvent.RemoveCause getCause() {
026            return cause;
027        }
028    
029        public boolean isCancelled() {
030            return cancelled;
031        }
032    
033        public void setCancelled(boolean cancel) {
034            this.cancelled = cancel;
035        }
036    
037        /**
038         * An enum to specify the cause of the removal
039         */
040        public enum RemoveCause {
041            /**
042             * Removed by an entity
043             */
044            ENTITY,
045            /**
046             * Removed by an explosion
047             */
048            EXPLOSION,
049            /**
050             * Removed by placing a block on it
051             */
052            OBSTRUCTION,
053            /**
054             * Removed by destroying the block behind it, etc
055             */
056            PHYSICS,
057            /**
058             * Removed by an uncategorised cause
059             */
060            DEFAULT,
061        }
062    
063        @Override
064        public HandlerList getHandlers() {
065            return handlers;
066        }
067    
068        public static HandlerList getHandlerList() {
069            return handlers;
070        }
071    }