org.bukkit.event.inventory
Class InventoryClickEvent

java.lang.Object
  extended by org.bukkit.event.Event
      extended by org.bukkit.event.inventory.InventoryEvent
          extended by org.bukkit.event.inventory.InventoryInteractEvent
              extended by org.bukkit.event.inventory.InventoryClickEvent
All Implemented Interfaces:
Cancellable
Direct Known Subclasses:
CraftItemEvent, InventoryCreativeEvent

public class InventoryClickEvent
extends InventoryInteractEvent

This event is called when a player clicks a slot in an inventory.

Because InventoryClickEvent occurs within a modification of the Inventory, not all Inventory related methods are safe to use.

The following should never be invoked by an EventHandler for InventoryClickEvent using the HumanEntity or InventoryView associated with this event:

To invoke one of these methods, schedule a task using BukkitScheduler.runTask(Plugin, Runnable), which will run the task on the next tick. Also be aware that this is not an exhaustive list, and other methods could potentially create issues as well.

Assuming the EntityHuman associated with this event is an instance of a Player, manipulating the MaxStackSize or contents of an Inventory will require an Invocation of Player.updateInventory().

Modifications to slots that are modified by the results of this InventoryClickEvent can be overwritten. To change these slots, this event should be cancelled and all desired changes to the inventory applied. Alternatively, scheduling a task using BukkitScheduler.runTask( Plugin, Runnable), which would execute the task on the next tick, would work as well.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.bukkit.event.Event
Event.Result
 
Field Summary
 
Fields inherited from class org.bukkit.event.inventory.InventoryEvent
transaction
 
Constructor Summary
InventoryClickEvent(InventoryView view, InventoryType.SlotType type, int slot, boolean right, boolean shift)
          Deprecated. 
InventoryClickEvent(InventoryView view, InventoryType.SlotType type, int slot, ClickType click, InventoryAction action)
           
InventoryClickEvent(InventoryView view, InventoryType.SlotType type, int slot, ClickType click, InventoryAction action, int key)
           
 
Method Summary
 InventoryAction getAction()
          Gets the InventoryAction that triggered this event.
 ClickType getClick()
          Gets the ClickType for this event.
 ItemStack getCurrentItem()
          Gets the ItemStack currently in the clicked slot.
 ItemStack getCursor()
          Gets the current ItemStack on the cursor.
static HandlerList getHandlerList()
           
 HandlerList getHandlers()
           
 int getHotbarButton()
          If the ClickType is NUMBER_KEY, this method will return the index of the pressed key (0-8).
 int getRawSlot()
          The raw slot number clicked, ready for passing to #getItem(int) This slot number is unique for the view.
 int getSlot()
          The slot number that was clicked, ready for passing to Inventory.getItem(int).
 InventoryType.SlotType getSlotType()
          Gets the type of slot that was clicked.
 boolean isLeftClick()
          Gets whether or not the ClickType for this event represents a left click.
 boolean isRightClick()
          Gets whether or not the ClickType for this event represents a right click.
 boolean isShiftClick()
          Gets whether the ClickType for this event indicates that the key was pressed down when the click was made.
 void setCurrentItem(ItemStack stack)
          Sets the ItemStack currently in the clicked slot.
 void setCursor(ItemStack stack)
          Deprecated. This changes the ItemStack in their hand before any calculations are applied to the Inventory, which has a tendency to create inconsistencies between the Player and the server, and to make unexpected changes in the behavior of the clicked Inventory.
 
Methods inherited from class org.bukkit.event.inventory.InventoryInteractEvent
getResult, getWhoClicked, isCancelled, setCancelled, setResult
 
Methods inherited from class org.bukkit.event.inventory.InventoryEvent
getInventory, getView, getViewers
 
Methods inherited from class org.bukkit.event.Event
getEventName, isAsynchronous
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InventoryClickEvent

@Deprecated
public InventoryClickEvent(InventoryView view,
                                      InventoryType.SlotType type,
                                      int slot,
                                      boolean right,
                                      boolean shift)
Deprecated. 


InventoryClickEvent

public InventoryClickEvent(InventoryView view,
                           InventoryType.SlotType type,
                           int slot,
                           ClickType click,
                           InventoryAction action)

InventoryClickEvent

public InventoryClickEvent(InventoryView view,
                           InventoryType.SlotType type,
                           int slot,
                           ClickType click,
                           InventoryAction action,
                           int key)
Method Detail

getSlotType

public InventoryType.SlotType getSlotType()
Gets the type of slot that was clicked.

Returns:
the slot type

getCursor

public ItemStack getCursor()
Gets the current ItemStack on the cursor.

Returns:
the cursor ItemStack

getCurrentItem

public ItemStack getCurrentItem()
Gets the ItemStack currently in the clicked slot.

Returns:
the item in the clicked

isRightClick

public boolean isRightClick()
Gets whether or not the ClickType for this event represents a right click.

Returns:
true if the ClickType uses the right mouse button.
See Also:
ClickType.isRightClick()

isLeftClick

public boolean isLeftClick()
Gets whether or not the ClickType for this event represents a left click.

Returns:
true if the ClickType uses the left mouse button.
See Also:
ClickType.isLeftClick()

isShiftClick

public boolean isShiftClick()
Gets whether the ClickType for this event indicates that the key was pressed down when the click was made.

Returns:
true if the ClickType uses Shift or Ctrl.
See Also:
ClickType.isShiftClick()

setCursor

@Deprecated
public void setCursor(ItemStack stack)
Deprecated. This changes the ItemStack in their hand before any calculations are applied to the Inventory, which has a tendency to create inconsistencies between the Player and the server, and to make unexpected changes in the behavior of the clicked Inventory.

Sets the item on the cursor.

Parameters:
stack - the new cursor item

setCurrentItem

public void setCurrentItem(ItemStack stack)
Sets the ItemStack currently in the clicked slot.

Parameters:
stack - the item to be placed in the current slot

getSlot

public int getSlot()
The slot number that was clicked, ready for passing to Inventory.getItem(int). Note that there may be two slots with the same slot number, since a view links two different inventories.

Returns:
The slot number.

getRawSlot

public int getRawSlot()
The raw slot number clicked, ready for passing to #getItem(int) This slot number is unique for the view.

Returns:
the slot number

getHotbarButton

public int getHotbarButton()
If the ClickType is NUMBER_KEY, this method will return the index of the pressed key (0-8).

Returns:
the number on the key minus 1 (range 0-8); or -1 if not a NUMBER_KEY action

getAction

public InventoryAction getAction()
Gets the InventoryAction that triggered this event.

This action cannot be changed, and represents what the normal outcome of the event will be. To change the behavior of this InventoryClickEvent, changes must be manually applied.

Returns:
the InventoryAction that triggered this event.

getClick

public ClickType getClick()
Gets the ClickType for this event.

This is insulated against changes to the inventory by other plugins.

Returns:
the type of inventory click

getHandlers

public HandlerList getHandlers()
Overrides:
getHandlers in class InventoryEvent

getHandlerList

public static HandlerList getHandlerList()


Copyright © 2013. All Rights Reserved.