package org.bukkit.event.enchantment;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.inventory.InventoryEvent;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import java.util.HashMap;
import java.util.Map;
/**
* Called when an ItemStack is successfully enchanted (currently at
* enchantment table)
*/
public class EnchantItemEvent extends InventoryEvent implements Cancellable
{
private static final HandlerList handlers = new HandlerList();
private final Block table;
private final ItemStack item;
private int level;
private boolean cancelled;
private final Map<Enchantment, Integer> enchants;
private final Player enchanter;
private int button;
public EnchantItemEvent(final Player enchanter, final InventoryView view, final Block table, final ItemStack item, final int level, final Map<Enchantment, Integer> enchants, final int i)
{
super(view);
this.enchanter = enchanter;
this.table = table;
this.item = item;
this.level = level;
this.enchants = new HashMap<Enchantment, Integer>(enchants);
this.cancelled = false;
this.button = i;
}
/**
* Gets the player enchanting the item
*
* @return enchanting player
*/
public Player getEnchanter()
{
return enchanter;
}
/**
* Gets the block being used to enchant the item
*
* @return the block used for enchanting
*/
public Block getEnchantBlock()
{
return table;
}
/**
* Gets the item to be enchanted (can be modified)
*
* @return ItemStack of item
*/
public ItemStack getItem()
{
return item;
}
/**
* Get cost in exp levels of the enchantment
*
* @return experience level cost
*/
public int getExpLevelCost()
{
return level;
}
/**
* Set cost in exp levels of the enchantment
*
* @param level - cost in levels
*/
public void setExpLevelCost(int level)
{
this.level = level;
}
/**
* Get map of enchantment (levels, keyed by type) to be added to item
* (modify map returned to change values). Note: Any enchantments not
* allowed for the item will be ignored
*
* @return map of enchantment levels, keyed by enchantment
*/
public Map<Enchantment, Integer> getEnchantsToAdd()
{
return enchants;
}
/**
* Which button was pressed to initiate the enchanting.
*
* @return The button index (0, 1, or 2).
*/
public int whichButton()
{
return button;
}
public boolean isCancelled()
{
return cancelled;
}
public void setCancelled(boolean cancel)
{
this.cancelled = cancel;
}
@Override
public HandlerList getHandlers()
{
return handlers;
}
public static HandlerList getHandlerList()
{
return handlers;
}
}