001 package org.bukkit.event.block;
002
003 import org.bukkit.block.Block;
004 import org.bukkit.event.Cancellable;
005 import org.bukkit.event.HandlerList;
006 import org.bukkit.inventory.ItemStack;
007 import org.bukkit.util.Vector;
008
009 /**
010 * Called when an item is dispensed from a block.
011 * <p>
012 * If a Block Dispense event is cancelled, the block will not dispense the
013 * item.
014 */
015 public class BlockDispenseEvent extends BlockEvent implements Cancellable {
016 private static final HandlerList handlers = new HandlerList();
017 private boolean cancelled = false;
018 private ItemStack item;
019 private Vector velocity;
020
021 public BlockDispenseEvent(final Block block, final ItemStack dispensed, final Vector velocity) {
022 super(block);
023 this.item = dispensed;
024 this.velocity = velocity;
025 }
026
027 /**
028 * Gets the item that is being dispensed. Modifying the returned item will
029 * have no effect, you must use {@link
030 * #setItem(org.bukkit.inventory.ItemStack)} instead.
031 *
032 * @return An ItemStack for the item being dispensed
033 */
034 public ItemStack getItem() {
035 return item.clone();
036 }
037
038 /**
039 * Sets the item being dispensed.
040 *
041 * @param item the item being dispensed
042 */
043 public void setItem(ItemStack item) {
044 this.item = item;
045 }
046
047 /**
048 * Gets the velocity.
049 * <p>
050 * Note: Modifying the returned Vector will not change the velocity, you
051 * must use {@link #setVelocity(org.bukkit.util.Vector)} instead.
052 *
053 * @return A Vector for the dispensed item's velocity
054 */
055 public Vector getVelocity() {
056 return velocity.clone();
057 }
058
059 /**
060 * Sets the velocity of the item being dispensed.
061 *
062 * @param vel the velocity of the item being dispensed
063 */
064 public void setVelocity(Vector vel) {
065 velocity = vel;
066 }
067
068 public boolean isCancelled() {
069 return cancelled;
070 }
071
072 public void setCancelled(boolean cancel) {
073 cancelled = cancel;
074 }
075
076 @Override
077 public HandlerList getHandlers() {
078 return handlers;
079 }
080
081 public static HandlerList getHandlerList() {
082 return handlers;
083 }
084 }