summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorfeildmaster <admin@feildmaster.com>2012-08-08 06:51:44 -0500
committerfeildmaster <admin@feildmaster.com>2012-08-08 19:48:50 -0500
commita54fdd96e86979c60d94d61004018bdec7964965 (patch)
tree63ba1dd37dd3b5bb83798ac25b8b85f4f40c0b24 /src
parent3c91fdc1219a6c3ea575a90e8a8588ca7f157943 (diff)
downloadbukkit-a54fdd96e86979c60d94d61004018bdec7964965.tar
bukkit-a54fdd96e86979c60d94d61004018bdec7964965.tar.gz
bukkit-a54fdd96e86979c60d94d61004018bdec7964965.tar.lz
bukkit-a54fdd96e86979c60d94d61004018bdec7964965.tar.xz
bukkit-a54fdd96e86979c60d94d61004018bdec7964965.zip
Add API for getting and setting experience for BlockBreakEvent. Addresses BUKKIT-2033
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/event/block/BlockBreakEvent.java33
1 files 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.
* <p />
+ * 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:
+ * <ol>
+ * <li />The player is not in creative or adventure mode
+ * <li />The player can loot the block (ie: does not destroy it completely, by using the correct tool)
+ * <li />The player does not have silk touch
+ * <li />The block drops experience in vanilla MineCraft
+ * </ol>
+ * <p />
* 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.
* <p />
- * 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;
}