Books may be signed from off hand. Gets the inventory slot number for the book item that triggered this event. This is a slot number on the player's hotbar in the range 0-8, or -1 for off hand. Returns: the inventory slot number that the book item occupies. In Bukkit, inventory view slots are referenced by slot IDs. However, there are many types of inventory views, which can lead to confusion of which ID belongs to which slot. This page shows all raw slot IDs of all inventory views for ease of reference. Inventory views are sorted alphabetically. If you use the PrepareAnvilEvent you can get the different items in an anvil inventory. If you use event.getResult you will get the item in the result slot. Or if you want to set the item in the result slot its event.setResult(itemstack); To get the two item that are in the Inventory you can use inventory.getItem(1) or inventory.getItem(2). Finds all slots in the inventory containing any ItemStacks with the given ItemStack. This will only match slots if both the type and the amount of the stack match The HashMap contains entries where, the key is the slot index, and the value is the ItemStack in that slot. #slotlock contains the players slots you want locked (0-39). #(0-8) are the hot-bar, (9-35) are the inventory, and (36-39) is the armor. #item is the item locked in the slot, amount is the amount of items, #permission is the permission node you must have for the slots to be locked, #name is the item name, and lore is the item lore.
Cancellable
CraftItemEvent
, InventoryCreativeEvent
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 usingBukkitScheduler.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.
Event.Result
transaction
Constructor | Description |
---|---|
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) |
Modifier and Type | Method | Description |
---|---|---|
InventoryAction | getAction() | Gets the InventoryAction that triggered this event. |
ClickType | getClick() | |
Inventory | getClickedInventory() | Gets the inventory that was clicked, or null if outside of window |
ItemStack | getCurrentItem() | |
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() | |
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) | |
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. |
callEvent, getEventName, isAsynchronous
getInventory, getView, getViewers
getResult, getWhoClicked, isCancelled, setCancelled, setResult
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
ClickType.isRightClick()
ClickType.isLeftClick()
ClickType.isShiftClick()
stack
- the new cursor itemstack
- the item to be placed in the current slotInventory.getItem(int)
. Note that there may be two slots with the same slot number, since a view links two different inventories.#getItem(int)
This slot number is unique for the view.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.
This is insulated against changes to the inventory by other plugins.
getHandlers
in class InventoryEvent
Copyright © 2019. All rights reserved.
Modifier and Type | Method | Description |
---|---|---|
void | close() | |
int | convertSlot(int rawSlot) | Converts a raw slot ID into its local slot ID into whichever of the twoinventories the slot points to. |
int | countSlots() | Check the total number of slots in this view, combining the upper andlower inventories. |
abstract Inventory | getBottomInventory() | Get the lower inventory involved in this transaction. |
ItemStack | getCursor() | Get the item on the cursor of one of the viewing players. |
Inventory | getInventory(int rawSlot) | Gets the inventory corresponding to the given raw slot ID. |
ItemStack | getItem(int slot) | Gets one item in this inventory view by its raw slot ID. |
abstract HumanEntity | getPlayer() | |
InventoryType.SlotType | getSlotType(int slot) | Determine the type of the slot by its raw slot ID. |
abstract String | getTitle() | |
abstract Inventory | getTopInventory() | Get the upper inventory involved in this transaction. |
abstract InventoryType | getType() | Determine the type of inventory involved in the transaction. |
void | setCursor(ItemStack item) | Sets the item on the cursor of one of the viewing players. |
void | setItem(int slot,ItemStack item) | Sets one item in this inventory view by its raw slot ID. |
boolean | setProperty(InventoryView.Property prop,int value) | Sets an extra property of this inventory if supported by thatinventory, for example the state of a progress bar. |