001 package org.bukkit.event.player;
002
003 import org.bukkit.Material;
004 import org.bukkit.entity.Player;
005 import org.bukkit.event.Cancellable;
006 import org.bukkit.event.HandlerList;
007 import org.bukkit.inventory.ItemStack;
008
009 /**
010 * This event will fire when a player is finishing consuming an item (food,
011 * potion, milk bucket).
012 * <br>
013 * If the ItemStack is modified the server will use the effects of the new
014 * item and not remove the original one from the player's inventory.
015 * <br>
016 * If the event is cancelled the effect will not be applied and the item will
017 * not be removed from the player's inventory.
018 */
019 public class PlayerItemConsumeEvent extends PlayerEvent implements Cancellable {
020 private static final HandlerList handlers = new HandlerList();
021 private boolean isCancelled = false;
022 private ItemStack item;
023
024 /**
025 * @param player the player consuming
026 * @param item the ItemStack being consumed
027 */
028 public PlayerItemConsumeEvent(final Player player, final ItemStack item) {
029 super(player);
030
031 this.item = item;
032 }
033
034 /**
035 * Gets the item that is being consumed. Modifying the returned item will
036 * have no effect, you must use {@link
037 * #setItem(org.bukkit.inventory.ItemStack)} instead.
038 *
039 * @return an ItemStack for the item being consumed
040 */
041 public ItemStack getItem() {
042 return item.clone();
043 }
044
045 /**
046 * Set the item being consumed
047 *
048 * @param item the item being consumed
049 */
050 public void setItem(ItemStack item) {
051 if (item == null) {
052 this.item = new ItemStack(Material.AIR);
053 } else {
054 this.item = item;
055 }
056 }
057
058 public boolean isCancelled() {
059 return this.isCancelled;
060 }
061
062 public void setCancelled(boolean cancel) {
063 this.isCancelled = cancel;
064 }
065
066 @Override
067 public HandlerList getHandlers() {
068 return handlers;
069 }
070
071 public static HandlerList getHandlerList() {
072 return handlers;
073 }
074 }