Interface Inventory
- All Superinterfaces:
Clearable
- All Known Subinterfaces:
Hopper
,LootableInventory
,RecipeInputInventory
,SidedInventory
,SingleStackInventory
,SingleStackInventory.SingleStackBlockEntityInventory
,VehicleInventory
- All Known Implementing Classes:
AbstractChestBoatEntity
,AbstractFurnaceBlockEntity
,BarrelBlockEntity
,BlastFurnaceBlockEntity
,BrewingStandBlockEntity
,ChestBlockEntity
,ChestBoatEntity
,ChestMinecartEntity
,ChestRaftEntity
,ChiseledBookshelfBlockEntity
,ComposterBlock.ComposterInventory
,ComposterBlock.DummyInventory
,ComposterBlock.FullComposterInventory
,CrafterBlockEntity
,CraftingInventory
,CraftingResultInventory
,DecoratedPotBlockEntity
,DispenserBlockEntity
,DoubleInventory
,DropperBlockEntity
,EnderChestInventory
,FurnaceBlockEntity
,HopperBlockEntity
,HopperMinecartEntity
,JukeboxBlockEntity
,LockableContainerBlockEntity
,LootableContainerBlockEntity
,MerchantInventory
,PlayerInventory
,ShulkerBoxBlockEntity
,SimpleInventory
,SmokerBlockEntity
,StorageMinecartEntity
,TrappedChestBlockEntity
ItemStack
s. In general, when a player stores an item stack
and can retrieve the same item stack back, that stack is stored in an
inventory. The inventory can be persistent, like chests or donkeys, or it can
be created without backing storage, like the slots in crafting tables.
It is the responsibility of the user to sync or save the contents of the
inventory.
Entities and block entities that can hold item stacks generally
implement this interface themselves, allowing hopper interactions. Call PlayerEntity.getInventory()
to get the player's
inventory (including armors and offhand).
An inventory has a fixed size, and each element in the inventory is identified
by the slot number, which is between zero and size() - 1
like arrays.
When a slot of the inventory is empty, it should be filled with ItemStack.EMPTY
.
An implementation of this interface should have a field of DefaultedList.ofSize(int, Object)
with the second
argument as ItemStack.EMPTY
, and implement methods by delegating to the
list. The list itself should not be modified directly, and the list's size
should remain constant throughout the lifetime of the inventory.
Implementations must call markDirty()
when the inventory is modified.
- See Also:
- API Note:
- If an inventory is needed for temporary storage, use
SimpleInventory
. For persistent storage in entities or block entities, useVehicleInventory
orLockableContainerBlockEntity
. - Mappings:
Namespace Name named net/minecraft/inventory/Inventory
intermediary net/minecraft/class_1263
official btb
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
canPlayerUse
(BlockEntity blockEntity, PlayerEntity player) Returns whetherplayer
can use thisblockEntity
.static boolean
canPlayerUse
(BlockEntity blockEntity, PlayerEntity player, float range) Returns whetherplayer
can use thisblockEntity
.boolean
canPlayerUse
(PlayerEntity player) Returns whetherplayer
can use this inventory.default boolean
canTransferTo
(Inventory hopperInventory, int slot, ItemStack stack) Returns whether a hopper can transferstack
fromslot
to the hopper.default boolean
containsAny
(Predicate<ItemStack> predicate) Returns whether this inventory contains any of the stacks matchingpredicate
.default boolean
containsAny
(Set<Item> items) Returns whether this inventory contains any ofitems
.default int
Returns the number of timesitem
occurs in this inventory across all stored stacks.default int
getMaxCount
(ItemStack stack) default int
Returns the maximum number of items a stack can contain when placed inside this inventory.getStack
(int slot) Returns the stack currently stored atslot
.boolean
isEmpty()
Returns whether the inventory consists entirely of empty item stacks.default boolean
Returns whetherstack
is valid for theslot
.void
Marks the inventory as modified.default void
onClose
(PlayerEntity player) Called when the inventory is closed.default void
onOpen
(PlayerEntity player) Called when the inventory is opened.removeStack
(int slot) Removes the stack currently stored atslot
.removeStack
(int slot, int amount) Removes a specific number of items fromslot
.void
Sets the stack stored atslot
tostack
.int
size()
Returns the size of the inventory.
-
Field Details
-
DEFAULT_MAX_INTERACTION_RANGE
static final float DEFAULT_MAX_INTERACTION_RANGE- See Also:
- Mappings:
Namespace Name Mixin selector named DEFAULT_MAX_INTERACTION_RANGE
Lnet/minecraft/inventory/Inventory;DEFAULT_MAX_INTERACTION_RANGE:F
intermediary field_48319
Lnet/minecraft/class_1263;field_48319:F
official r_
Lbtb;r_:F
-
-
Method Details
-
size
int size()Returns the size of the inventory.The inventory should support the slot ID from
0
tosize() - 1
. This should remain constant throughout the inventory's lifetime.- Returns:
- the size of the inventory
- Mappings:
Namespace Name Mixin selector named size
Lnet/minecraft/inventory/Inventory;size()I
intermediary method_5439
Lnet/minecraft/class_1263;method_5439()I
official b
Lbtb;b()I
-
isEmpty
boolean isEmpty()Returns whether the inventory consists entirely of empty item stacks.- Returns:
- whether the inventory consists entirely of empty item stacks
- Mappings:
Namespace Name Mixin selector named isEmpty
Lnet/minecraft/inventory/Inventory;isEmpty()Z
intermediary method_5442
Lnet/minecraft/class_1263;method_5442()Z
official c
Lbtb;c()Z
-
getStack
Returns the stack currently stored atslot
.If the slot is empty, or is outside the bounds of this inventory, this returns
ItemStack.EMPTY
.- Returns:
- the stack currently stored at
slot
- Mappings:
Namespace Name Mixin selector named getStack
Lnet/minecraft/inventory/Inventory;getStack(I)Lnet/minecraft/item/ItemStack;
intermediary method_5438
Lnet/minecraft/class_1263;method_5438(I)Lnet/minecraft/class_1799;
official a
Lbtb;a(I)Lcxo;
-
removeStack
Removes a specific number of items fromslot
.- Returns:
- the removed items as a stack
- Mappings:
Namespace Name Mixin selector named removeStack
Lnet/minecraft/inventory/Inventory;removeStack(II)Lnet/minecraft/item/ItemStack;
intermediary method_5434
Lnet/minecraft/class_1263;method_5434(II)Lnet/minecraft/class_1799;
official a
Lbtb;a(II)Lcxo;
-
removeStack
Removes the stack currently stored atslot
.- Returns:
- the stack previously stored at the indicated slot
- Mappings:
Namespace Name Mixin selector named removeStack
Lnet/minecraft/inventory/Inventory;removeStack(I)Lnet/minecraft/item/ItemStack;
intermediary method_5441
Lnet/minecraft/class_1263;method_5441(I)Lnet/minecraft/class_1799;
official b
Lbtb;b(I)Lcxo;
-
setStack
Sets the stack stored atslot
tostack
.- Mappings:
Namespace Name Mixin selector named setStack
Lnet/minecraft/inventory/Inventory;setStack(ILnet/minecraft/item/ItemStack;)V
intermediary method_5447
Lnet/minecraft/class_1263;method_5447(ILnet/minecraft/class_1799;)V
official a
Lbtb;a(ILcxo;)V
-
getMaxCountPerStack
default int getMaxCountPerStack()Returns the maximum number of items a stack can contain when placed inside this inventory.No slots may have more than this number of items. It is effectively the stacking limit for this inventory's slots.
- Returns:
- the maximum number of items a stack can contain when placed inside this inventory
- Mappings:
Namespace Name Mixin selector named getMaxCountPerStack
Lnet/minecraft/inventory/Inventory;getMaxCountPerStack()I
intermediary method_5444
Lnet/minecraft/class_1263;method_5444()I
official ao_
Lbtb;ao_()I
-
getMaxCount
- Mappings:
Namespace Name Mixin selector named getMaxCount
Lnet/minecraft/inventory/Inventory;getMaxCount(Lnet/minecraft/item/ItemStack;)I
intermediary method_58350
Lnet/minecraft/class_1263;method_58350(Lnet/minecraft/class_1799;)I
official e_
Lbtb;e_(Lcxo;)I
-
markDirty
void markDirty()Marks the inventory as modified. Implementations should call this method every time the inventory is changed in any way.- See Also:
- API Note:
- Implementations should mark the inventory for synchronization or
saving in this method. Since this is called frequently, it is not recommended to
synchronize or save the inventory directly in this method. If this inventory is
implemented in a block entity, then it should always call
super.markDirty();
to ensure the block entity gets saved. - Mappings:
Namespace Name Mixin selector named markDirty
Lnet/minecraft/inventory/Inventory;markDirty()V
intermediary method_5431
Lnet/minecraft/class_1263;method_5431()V
official e
Lbtb;e()V
-
canPlayerUse
Returns whetherplayer
can use this inventory.This is called by
ScreenHandler.canUse(net.minecraft.screen.ScreenHandlerContext, net.minecraft.entity.player.PlayerEntity, net.minecraft.block.Block)
.- Returns:
- whether
player
can use this inventory - See Also:
- API Note:
- Implementations should check the distance between the inventory
holder and
player
. For convenience, this interface offers two methods used by block entities to implement this check. - Mappings:
Namespace Name Mixin selector named canPlayerUse
Lnet/minecraft/inventory/Inventory;canPlayerUse(Lnet/minecraft/entity/player/PlayerEntity;)Z
intermediary method_5443
Lnet/minecraft/class_1263;method_5443(Lnet/minecraft/class_1657;)Z
official a
Lbtb;a(Lcpw;)Z
-
onOpen
Called when the inventory is opened. Specifically, this is called inside theScreenHandler
constructor. This does nothing by default.The method is called in both the client and the server. However, because clientside screen handler is created with a
SimpleInventory
, other implementations can (and the vanilla code does) assume that the method is called in the server.- Mappings:
Namespace Name Mixin selector named onOpen
Lnet/minecraft/inventory/Inventory;onOpen(Lnet/minecraft/entity/player/PlayerEntity;)V
intermediary method_5435
Lnet/minecraft/class_1263;method_5435(Lnet/minecraft/class_1657;)V
official c_
Lbtb;c_(Lcpw;)V
-
onClose
Called when the inventory is closed. Specifically, this is called insideScreenHandler.onClosed(net.minecraft.entity.player.PlayerEntity)
. This does nothing by default.The method is called in both the client and the server. However, because clientside screen handler is created with a
SimpleInventory
, other implementations can (and the vanilla code does) assume that the method is called in the server.- Mappings:
Namespace Name Mixin selector named onClose
Lnet/minecraft/inventory/Inventory;onClose(Lnet/minecraft/entity/player/PlayerEntity;)V
intermediary method_5432
Lnet/minecraft/class_1263;method_5432(Lnet/minecraft/class_1657;)V
official c
Lbtb;c(Lcpw;)V
-
isValid
Returns whetherstack
is valid for theslot
.Implementations can, for example, use this to check whether the item is in a specific tag. This returns
true
by default.- Returns:
- whether
stack
is valid for theslot
- Mappings:
Namespace Name Mixin selector named isValid
Lnet/minecraft/inventory/Inventory;isValid(ILnet/minecraft/item/ItemStack;)Z
intermediary method_5437
Lnet/minecraft/class_1263;method_5437(ILnet/minecraft/class_1799;)Z
official b
Lbtb;b(ILcxo;)Z
-
canTransferTo
Returns whether a hopper can transferstack
fromslot
to the hopper.This returns
true
by default.- Returns:
- whether a hopper can transfer
stack
fromslot
to the hopper - Mappings:
Namespace Name Mixin selector named canTransferTo
Lnet/minecraft/inventory/Inventory;canTransferTo(Lnet/minecraft/inventory/Inventory;ILnet/minecraft/item/ItemStack;)Z
intermediary method_49104
Lnet/minecraft/class_1263;method_49104(Lnet/minecraft/class_1263;ILnet/minecraft/class_1799;)Z
official a
Lbtb;a(Lbtb;ILcxo;)Z
-
count
Returns the number of timesitem
occurs in this inventory across all stored stacks.- Returns:
- the number of times
item
occurs in this inventory across all stored stacks - Mappings:
Namespace Name Mixin selector named count
Lnet/minecraft/inventory/Inventory;count(Lnet/minecraft/item/Item;)I
intermediary method_18861
Lnet/minecraft/class_1263;method_18861(Lnet/minecraft/class_1792;)I
official a_
Lbtb;a_(Lcxk;)I
-
containsAny
Returns whether this inventory contains any ofitems
.- Returns:
- whether this inventory contains any of
items
- See Also:
- Mappings:
Namespace Name Mixin selector named containsAny
Lnet/minecraft/inventory/Inventory;containsAny(Ljava/util/Set;)Z
intermediary method_18862
Lnet/minecraft/class_1263;method_18862(Ljava/util/Set;)Z
official a
Lbtb;a(Ljava/util/Set;)Z
-
containsAny
Returns whether this inventory contains any of the stacks matchingpredicate
.- Returns:
- whether this inventory contains any of the stacks matching
predicate
- See Also:
- Mappings:
Namespace Name Mixin selector named containsAny
Lnet/minecraft/inventory/Inventory;containsAny(Ljava/util/function/Predicate;)Z
intermediary method_43256
Lnet/minecraft/class_1263;method_43256(Ljava/util/function/Predicate;)Z
official a_
Lbtb;a_(Ljava/util/function/Predicate;)Z
-
canPlayerUse
Returns whetherplayer
can use thisblockEntity
.- Returns:
- whether
player
can use thisblockEntity
- See Also:
- API Note:
- This is used by block entities to implement
canPlayerUse(PlayerEntity)
. - Implementation Note:
- This method checks whether the given block entity exists and whether the player is within 8 blocks of the block entity.
- Mappings:
Namespace Name Mixin selector named canPlayerUse
Lnet/minecraft/inventory/Inventory;canPlayerUse(Lnet/minecraft/block/entity/BlockEntity;Lnet/minecraft/entity/player/PlayerEntity;)Z
intermediary method_49105
Lnet/minecraft/class_1263;method_49105(Lnet/minecraft/class_2586;Lnet/minecraft/class_1657;)Z
official a
Lbtb;a(Lduw;Lcpw;)Z
-
canPlayerUse
Returns whetherplayer
can use thisblockEntity
.- Returns:
- whether
player
can use thisblockEntity
- See Also:
- API Note:
- This is used by block entities to implement
canPlayerUse(PlayerEntity)
. - Implementation Note:
- This method checks whether the given block entity exists and whether
the player is within
range
blocks of the block entity. - Mappings:
Namespace Name Mixin selector named canPlayerUse
Lnet/minecraft/inventory/Inventory;canPlayerUse(Lnet/minecraft/block/entity/BlockEntity;Lnet/minecraft/entity/player/PlayerEntity;F)Z
intermediary method_49106
Lnet/minecraft/class_1263;method_49106(Lnet/minecraft/class_2586;Lnet/minecraft/class_1657;F)Z
official a
Lbtb;a(Lduw;Lcpw;F)Z
-