|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.bukkit.event.Event org.bukkit.event.inventory.InventoryEvent org.bukkit.event.inventory.InventoryInteractEvent org.bukkit.event.inventory.InventoryClickEvent
public class InventoryClickEvent
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:
HumanEntity.closeInventory()
HumanEntity.openInventory(Inventory)
HumanEntity.openWorkbench(Location, boolean)
HumanEntity.openEnchanting(Location, boolean)
InventoryView.close()
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 |
---|
@Deprecated public InventoryClickEvent(InventoryView view, InventoryType.SlotType type, int slot, boolean right, boolean shift)
public InventoryClickEvent(InventoryView view, InventoryType.SlotType type, int slot, ClickType click, InventoryAction action)
public InventoryClickEvent(InventoryView view, InventoryType.SlotType type, int slot, ClickType click, InventoryAction action, int key)
Method Detail |
---|
public InventoryType.SlotType getSlotType()
public ItemStack getCursor()
public ItemStack getCurrentItem()
public boolean isRightClick()
ClickType.isRightClick()
public boolean isLeftClick()
ClickType.isLeftClick()
public boolean isShiftClick()
ClickType.isShiftClick()
@Deprecated public void setCursor(ItemStack stack)
stack
- the new cursor itempublic void setCurrentItem(ItemStack stack)
stack
- the item to be placed in the current slotpublic int getSlot()
Inventory.getItem(int)
. Note that there may be two slots with
the same slot number, since a view links two different inventories.
public int getRawSlot()
#getItem(int)
This slot number is unique for the view.
public int getHotbarButton()
public InventoryAction getAction()
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.
public ClickType getClick()
This is insulated against changes to the inventory by other plugins.
public HandlerList getHandlers()
getHandlers
in class InventoryEvent
public static HandlerList getHandlerList()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |