Files
Bukkit/src/main/java/org/bukkit/event/enchantment/PrepareItemEnchantEvent.java
Celtic Minstrel 0b77483c2f [Bleeding] Inventory framework and events. Addresses BUKKIT-856
New events:
- InventoryOpenEvent
- InventoryClickEvent - detects any clicks on a slot or outside the window
  - In the creative inventory view, only clicks on the quickbar are detected
- InventoryCloseEvent
- BrewEvent - when a potion finishes brewing
- CraftItemEvent (a subevent of InventoryClickEvent) - fired when taking the crafted item
- PrepareItemCraftEvent - fired just before updating the result slot
Changes to existing events:
- EnchantItemEvent extends InventoryEvent and also has a new whichButton() method
- PrepareItemEnchantEvent also extends InventoryEvent
- FurnaceBurnEvent and FurnaceSmeltEvent now extend BlockEvent (as does BrewEvent)
- PlayerInventoryEvent is deprecated (though it never did anything anyway)
New subclasses of Inventory:
- BrewerInventory
- CraftingInventory
- DoubleChestInventory
- EnchantingInventory
- FurnaceInventory
New methods in Inventory:
- getViewers()
- getTitle()
- getType()
- getHolder()
- iterator() - Yes, inventories are now iterable!
  - The iterator is a ListIterator that does not support add or remove
New methods in Player:
- getOpenInventory()
- openInventory()
- openWorkbench()
- openEnchanting()
- closeInventory()
- setWindowProperty()
- getItemOnCursor()
- setItemOnCursor()
Other changes:
- createInventory() methods in Server to make inventories not linked to an object
- ContainerBlock is deprecated in favour of InventoryHolder
- New InventoryView class gives direct access to an inventory window!
- Removed the Slot class which did nothing and was used nowhere

Some small credit goes to Afforess (initial conception of openInventory() methods) and Drakia (initial conception of InventoryOpenEvent and InventoryCloseEvent).
2012-02-29 15:18:56 -05:00

93 lines
2.4 KiB
Java

package org.bukkit.event.enchantment;
import org.bukkit.block.Block;
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;
/**
* Called when an ItemStack is inserted in an enchantment table - can be called multiple times
*/
public class PrepareItemEnchantEvent extends InventoryEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private final Block table;
private final ItemStack item;
private final int[] levelsOffered;
private final int bonus;
private boolean cancelled;
private final Player enchanter;
public PrepareItemEnchantEvent(final Player enchanter, InventoryView view, final Block table, final ItemStack item, final int[] levelsOffered, final int bonus) {
super(view);
this.enchanter = enchanter;
this.table = table;
this.item = item;
this.levelsOffered = levelsOffered;
this.bonus = bonus;
this.cancelled = false;
}
/**
* Gets the player enchanting the item
*
* @returns 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 list of offered exp level costs of the enchantment (modify values to change offer)
* @return experience level costs offered
*/
public int[] getExpLevelCostsOffered() {
return levelsOffered;
}
/**
* Get enchantment bonus in effect - corresponds to number of bookshelves
* @return enchantment bonus
*/
public int getEnchantmentBonus() {
return bonus;
}
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;
}
}