001 package org.bukkit.event.block;
002
003 import org.bukkit.block.Block;
004 import org.bukkit.entity.Player;
005 import org.bukkit.event.Cancellable;
006 import org.bukkit.event.HandlerList;
007
008 /**
009 * Called when a block is broken by a player.
010 * <p>
011 * If you wish to have the block drop experience, you must set the experience
012 * value above 0. By default, experience will be set in the event if:
013 * <ol>
014 * <li>The player is not in creative or adventure mode
015 * <li>The player can loot the block (ie: does not destroy it completely, by
016 * using the correct tool)
017 * <li>The player does not have silk touch
018 * <li>The block drops experience in vanilla Minecraft
019 * </ol>
020 * <p>
021 * Note:
022 * Plugins wanting to simulate a traditional block drop should set the block
023 * to air and utilize their own methods for determining what the default drop
024 * for the block being broken is and what to do about it, if anything.
025 * <p>
026 * If a Block Break event is cancelled, the block will not break and
027 * experience will not drop.
028 */
029 public class BlockBreakEvent extends BlockExpEvent implements Cancellable {
030 private final Player player;
031 private boolean cancel;
032
033 public BlockBreakEvent(final Block theBlock, final Player player) {
034 super(theBlock, 0);
035
036 this.player = player;
037 }
038
039 /**
040 * Gets the Player that is breaking the block involved in this event.
041 *
042 * @return The Player that is breaking the block involved in this event
043 */
044 public Player getPlayer() {
045 return player;
046 }
047
048 public boolean isCancelled() {
049 return cancel;
050 }
051
052 public void setCancelled(boolean cancel) {
053 this.cancel = cancel;
054 }
055 }