Package org.bukkit.inventory

# Class InventoryView

java.lang.Object
org.bukkit.inventory.InventoryView

public abstract class InventoryView extends Object
Represents a view linking two inventories and a single player (whose inventory may or may not be one of the two).

Note: If you implement this interface but fail to satisfy the expected contracts of certain methods, there's no guarantee that the game will work as it should.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`InventoryView.Property`
Represents various extra properties of certain inventory windows.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`OUTSIDE`

## Constructor Summary

Constructors
Constructor
Description
`InventoryView()`

## Method Summary

Modifier and Type
Method
Description
`final void`
`close()`
Closes the inventory view.
`final int`
`convertSlot(int rawSlot)`
Converts a raw slot ID into its local slot ID into whichever of the two inventories the slot points to.
`final int`
`countSlots()`
Check the total number of slots in this view, combining the upper and lower inventories.
`abstract @NotNull Inventory`
`getBottomInventory()`
Get the lower inventory involved in this transaction.
`final @Nullable ItemStack`
`getCursor()`
Get the item on the cursor of one of the viewing players.
`final @Nullable Inventory`
`getInventory(int rawSlot)`
Gets the inventory corresponding to the given raw slot ID.
`@Nullable ItemStack`
`getItem(int slot)`
Gets one item in this inventory view by its raw slot ID.
`abstract @NotNull HumanEntity`
`getPlayer()`
Get the player viewing.
`final InventoryType.SlotType`
`getSlotType(int slot)`
Determine the type of the slot by its raw slot ID.
`abstract @NotNull String`
`getTitle()`
Deprecated.
in favour of `title()`
`abstract @NotNull Inventory`
`getTopInventory()`
Get the upper inventory involved in this transaction.
`abstract @NotNull InventoryType`
`getType()`
Determine the type of inventory involved in the transaction.
`final void`
`setCursor(@Nullable ItemStack item)`
Sets the item on the cursor of one of the viewing players.
`void`
`setItem(int slot, @Nullable ItemStack item)`
Sets one item in this inventory view by its raw slot ID.
`final boolean`
`setProperty(@NotNull InventoryView.Property prop, int value)`
Sets an extra property of this inventory if supported by that inventory, for example the state of a progress bar.
`Component`
`title()`
Get the title of this inventory window.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### OUTSIDE

public static final int OUTSIDE

See Also:
  - Constant Field Values

## Constructor Details

### InventoryView

public InventoryView()

## Method Details

### getTopInventory

@NotNull public abstract @NotNull Inventory getTopInventory()
Get the upper inventory involved in this transaction.

Returns:
  the inventory

### getBottomInventory

@NotNull public abstract @NotNull Inventory getBottomInventory()
Get the lower inventory involved in this transaction.

Returns:
  the inventory

### getPlayer

@NotNull public abstract @NotNull HumanEntity getPlayer()
Get the player viewing.

Returns:
  the player

### getType

@NotNull public abstract @NotNull InventoryType getType()
Determine the type of inventory involved in the transaction. This indicates the window style being shown. It will never return PLAYER, since that is common to all windows.

Returns:
  the inventory type

### setItem

public void setItem(int slot, @Nullable @Nullable ItemStack item)
Sets one item in this inventory view by its raw slot ID.

Note: If slot ID -999 is chosen, it may be expected that the item is dropped on the ground. This is not required behaviour, however.

Parameters:
  `slot` - The ID as returned by InventoryClickEvent.getRawSlot()
  `item` - The new item to put in the slot, or null to clear it.

### getItem

@Nullable public @Nullable ItemStack getItem(int slot)
Gets one item in this inventory view by its raw slot ID.

Parameters:
  `slot` - The ID as returned by InventoryClickEvent.getRawSlot()
Returns:
  The item currently in the slot.

### setCursor

public final void setCursor(@Nullable @Nullable ItemStack item)
Sets the item on the cursor of one of the viewing players.

Parameters:
  `item` - The item to put on the cursor, or null to remove the item on their cursor.

### getCursor

@Nullable public final @Nullable ItemStack getCursor()
Get the item on the cursor of one of the viewing players.

Returns:
  The item on the player's cursor, or null if they aren't holding one.

### getInventory

@Nullable public final @Nullable Inventory getInventory(int rawSlot)
Gets the inventory corresponding to the given raw slot ID. If the slot ID is `OUTSIDE` null will be returned, otherwise behaviour for illegal and negative slot IDs is undefined. May be used with `convertSlot(int)` to directly index an underlying inventory.

Parameters:
  `rawSlot` - The raw slot ID.
Returns:
  corresponding inventory, or null

### convertSlot

public final int convertSlot(int rawSlot)
Converts a raw slot ID into its local slot ID into whichever of the two inventories the slot points to.

If the raw slot refers to the upper inventory, it will be returned unchanged and thus be suitable for getTopInventory().getItem(); if it refers to the lower inventory, the output will differ from the input and be suitable for getBottomInventory().getItem().

Parameters:
  `rawSlot` - The raw slot ID.
Returns:
  The converted slot ID.

### getSlotType

@NotNull public final InventoryType.SlotType getSlotType(int slot)
Determine the type of the slot by its raw slot ID.

If the type of the slot is unknown, then `InventoryType.SlotType.CONTAINER` will be returned.

Parameters:
  `slot` - The raw slot ID
Returns:
  the slot type

### close

public final void close()
Closes the inventory view.

### countSlots

public final int countSlots()
Check the total number of slots in this view, combining the upper and lower inventories.

Note though that it's possible for this to be greater than the sum of the two inventories if for example some slots are not being used.

Returns:
  The total size

### setProperty

public final boolean setProperty(@NotNull @NotNull InventoryView.Property prop, int value)
Sets an extra property of this inventory if supported by that inventory, for example the state of a progress bar.

Parameters:
  `prop` - the window property to update
  `value` - the new value for the window property
Returns:
  true if the property was updated successfully, false if the property is not supported by that inventory

### title

@NotNull public Component title()
Get the title of this inventory window.

Returns:
  The title or empty string when title is `null`.

### getTitle

@Deprecated @NotNull public abstract @NotNull String getTitle()
Deprecated.
in favour of `title()`
Get the title of this inventory window.

Returns:
  The title.