From a54fdd96e86979c60d94d61004018bdec7964965 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Wed, 8 Aug 2012 06:51:44 -0500 Subject: Add API for getting and setting experience for BlockBreakEvent. Addresses BUKKIT-2033 --- .../org/bukkit/event/block/BlockBreakEvent.java | 33 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java index 606957f4..a5533007 100644 --- a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java @@ -8,22 +8,31 @@ import org.bukkit.event.HandlerList; /** * Called when a block is broken by a player. *

+ * If you wish to have the block drop experience, you must set the experience value above 0. + * By default, experience will be set in the event if: + *

    + *
  1. The player is not in creative or adventure mode + *
  2. The player can loot the block (ie: does not destroy it completely, by using the correct tool) + *
  3. The player does not have silk touch + *
  4. The block drops experience in vanilla MineCraft + *
+ *

* Note: - * Plugins wanting to simulate a traditional block drop should set the block to air and utilise their own methods for determining + * Plugins wanting to simulate a traditional block drop should set the block to air and utilize their own methods for determining * what the default drop for the block being broken is and what to do about it, if anything. *

- * If a Block Break event is cancelled, the block will not break. + * If a Block Break event is cancelled, the block will not break and experience will not drop. */ public class BlockBreakEvent extends BlockEvent implements Cancellable { private static final HandlerList handlers = new HandlerList(); private final Player player; private boolean cancel; + private int exp; public BlockBreakEvent(final Block theBlock, final Player player) { super(theBlock); this.player = player; - this.cancel = false; } /** @@ -35,6 +44,24 @@ public class BlockBreakEvent extends BlockEvent implements Cancellable { return player; } + /** + * Get the experience to drop after the block is broken. + * + * @return The experience to drop + */ + public int getExpToDrop() { + return exp; + } + + /** + * Set the amount of experience to drop after the block is broken. + * + * @param exp 1 or higher to drop experience, or else nothing will drop + */ + public void setExpToDrop(int exp) { + this.exp = exp; + } + public boolean isCancelled() { return cancel; } -- cgit v1.2.3