Interface Inventory
- All Superinterfaces:
Clearable
- All Known Subinterfaces:
Hopper,LootableInventory,RecipeInputInventory,SidedInventory,SingleStackInventory,SingleStackInventory.SingleStackBlockEntityInventory,VehicleInventory
- All Known Implementing Classes:
AbstractFurnaceBlockEntity,BarrelBlockEntity,BlastFurnaceBlockEntity,BrewingStandBlockEntity,ChestBlockEntity,ChestBoatEntity,ChestMinecartEntity,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
ItemStacks. 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, useVehicleInventoryorLockableContainerBlockEntity. - Mappings:
Namespace Name named net/minecraft/inventory/Inventoryintermediary net/minecraft/class_1263official bqk
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic booleancanPlayerUse(BlockEntity blockEntity, PlayerEntity player) Returns whetherplayercan use thisblockEntity.static booleancanPlayerUse(BlockEntity blockEntity, PlayerEntity player, float range) Returns whetherplayercan use thisblockEntity.booleancanPlayerUse(PlayerEntity player) Returns whetherplayercan use this inventory.default booleancanTransferTo(Inventory hopperInventory, int slot, ItemStack stack) Returns whether a hopper can transferstackfromslotto the hopper.default booleancontainsAny(Predicate<ItemStack> predicate) Returns whether this inventory contains any of the stacks matchingpredicate.default booleancontainsAny(Set<Item> items) Returns whether this inventory contains any ofitems.default intReturns the number of timesitemoccurs in this inventory across all stored stacks.default intgetMaxCount(ItemStack stack) default intReturns the maximum number of items a stack can contain when placed inside this inventory.getStack(int slot) Returns the stack currently stored atslot.booleanisEmpty()Returns whether the inventory consists entirely of empty item stacks.default booleanReturns whetherstackis valid for theslot.voidMarks the inventory as modified.default voidonClose(PlayerEntity player) Called when the inventory is closed.default voidonOpen(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.voidSets the stack stored atslottostack.intsize()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_RANGELnet/minecraft/inventory/Inventory;DEFAULT_MAX_INTERACTION_RANGE:Fintermediary field_48319Lnet/minecraft/class_1263;field_48319:Fofficial p_Lbqk;p_:F
-
-
Method Details
-
size
int size()Returns the size of the inventory.The inventory should support the slot ID from
0tosize() - 1. This should remain constant throughout the inventory's lifetime.- Returns:
- the size of the inventory
- Mappings:
Namespace Name Mixin selector named sizeLnet/minecraft/inventory/Inventory;size()Iintermediary method_5439Lnet/minecraft/class_1263;method_5439()Iofficial bLbqk;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 isEmptyLnet/minecraft/inventory/Inventory;isEmpty()Zintermediary method_5442Lnet/minecraft/class_1263;method_5442()Zofficial cLbqk;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 getStackLnet/minecraft/inventory/Inventory;getStack(I)Lnet/minecraft/item/ItemStack;intermediary method_5438Lnet/minecraft/class_1263;method_5438(I)Lnet/minecraft/class_1799;official aLbqk;a(I)Lcuq;
-
removeStack
Removes a specific number of items fromslot.- Returns:
- the removed items as a stack
- Mappings:
Namespace Name Mixin selector named removeStackLnet/minecraft/inventory/Inventory;removeStack(II)Lnet/minecraft/item/ItemStack;intermediary method_5434Lnet/minecraft/class_1263;method_5434(II)Lnet/minecraft/class_1799;official aLbqk;a(II)Lcuq;
-
removeStack
Removes the stack currently stored atslot.- Returns:
- the stack previously stored at the indicated slot
- Mappings:
Namespace Name Mixin selector named removeStackLnet/minecraft/inventory/Inventory;removeStack(I)Lnet/minecraft/item/ItemStack;intermediary method_5441Lnet/minecraft/class_1263;method_5441(I)Lnet/minecraft/class_1799;official bLbqk;b(I)Lcuq;
-
setStack
Sets the stack stored atslottostack.- Mappings:
Namespace Name Mixin selector named setStackLnet/minecraft/inventory/Inventory;setStack(ILnet/minecraft/item/ItemStack;)Vintermediary method_5447Lnet/minecraft/class_1263;method_5447(ILnet/minecraft/class_1799;)Vofficial aLbqk;a(ILcuq;)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 getMaxCountPerStackLnet/minecraft/inventory/Inventory;getMaxCountPerStack()Iintermediary method_5444Lnet/minecraft/class_1263;method_5444()Iofficial al_Lbqk;al_()I
-
getMaxCount
- Mappings:
Namespace Name Mixin selector named getMaxCountLnet/minecraft/inventory/Inventory;getMaxCount(Lnet/minecraft/item/ItemStack;)Iintermediary method_58350Lnet/minecraft/class_1263;method_58350(Lnet/minecraft/class_1799;)Iofficial e_Lbqk;e_(Lcuq;)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 markDirtyLnet/minecraft/inventory/Inventory;markDirty()Vintermediary method_5431Lnet/minecraft/class_1263;method_5431()Vofficial eLbqk;e()V
-
canPlayerUse
Returns whetherplayercan use this inventory.This is called by
ScreenHandler.canUse(net.minecraft.screen.ScreenHandlerContext, net.minecraft.entity.player.PlayerEntity, net.minecraft.block.Block).- Returns:
- whether
playercan 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 canPlayerUseLnet/minecraft/inventory/Inventory;canPlayerUse(Lnet/minecraft/entity/player/PlayerEntity;)Zintermediary method_5443Lnet/minecraft/class_1263;method_5443(Lnet/minecraft/class_1657;)Zofficial aLbqk;a(Lcmx;)Z
-
onOpen
Called when the inventory is opened. Specifically, this is called inside theScreenHandlerconstructor. 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 onOpenLnet/minecraft/inventory/Inventory;onOpen(Lnet/minecraft/entity/player/PlayerEntity;)Vintermediary method_5435Lnet/minecraft/class_1263;method_5435(Lnet/minecraft/class_1657;)Vofficial d_Lbqk;d_(Lcmx;)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 onCloseLnet/minecraft/inventory/Inventory;onClose(Lnet/minecraft/entity/player/PlayerEntity;)Vintermediary method_5432Lnet/minecraft/class_1263;method_5432(Lnet/minecraft/class_1657;)Vofficial cLbqk;c(Lcmx;)V
-
isValid
Returns whetherstackis valid for theslot.Implementations can, for example, use this to check whether the item is in a specific tag. This returns
trueby default.- Returns:
- whether
stackis valid for theslot - Mappings:
Namespace Name Mixin selector named isValidLnet/minecraft/inventory/Inventory;isValid(ILnet/minecraft/item/ItemStack;)Zintermediary method_5437Lnet/minecraft/class_1263;method_5437(ILnet/minecraft/class_1799;)Zofficial bLbqk;b(ILcuq;)Z
-
canTransferTo
Returns whether a hopper can transferstackfromslotto the hopper.This returns
trueby default.- Returns:
- whether a hopper can transfer
stackfromslotto the hopper - Mappings:
Namespace Name Mixin selector named canTransferToLnet/minecraft/inventory/Inventory;canTransferTo(Lnet/minecraft/inventory/Inventory;ILnet/minecraft/item/ItemStack;)Zintermediary method_49104Lnet/minecraft/class_1263;method_49104(Lnet/minecraft/class_1263;ILnet/minecraft/class_1799;)Zofficial aLbqk;a(Lbqk;ILcuq;)Z
-
count
Returns the number of timesitemoccurs in this inventory across all stored stacks.- Returns:
- the number of times
itemoccurs in this inventory across all stored stacks - Mappings:
Namespace Name Mixin selector named countLnet/minecraft/inventory/Inventory;count(Lnet/minecraft/item/Item;)Iintermediary method_18861Lnet/minecraft/class_1263;method_18861(Lnet/minecraft/class_1792;)Iofficial a_Lbqk;a_(Lcul;)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 containsAnyLnet/minecraft/inventory/Inventory;containsAny(Ljava/util/Set;)Zintermediary method_18862Lnet/minecraft/class_1263;method_18862(Ljava/util/Set;)Zofficial aLbqk;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 containsAnyLnet/minecraft/inventory/Inventory;containsAny(Ljava/util/function/Predicate;)Zintermediary method_43256Lnet/minecraft/class_1263;method_43256(Ljava/util/function/Predicate;)Zofficial a_Lbqk;a_(Ljava/util/function/Predicate;)Z
-
canPlayerUse
Returns whetherplayercan use thisblockEntity.- Returns:
- whether
playercan 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 canPlayerUseLnet/minecraft/inventory/Inventory;canPlayerUse(Lnet/minecraft/block/entity/BlockEntity;Lnet/minecraft/entity/player/PlayerEntity;)Zintermediary method_49105Lnet/minecraft/class_1263;method_49105(Lnet/minecraft/class_2586;Lnet/minecraft/class_1657;)Zofficial aLbqk;a(Ldqh;Lcmx;)Z
-
canPlayerUse
Returns whetherplayercan use thisblockEntity.- Returns:
- whether
playercan 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
rangeblocks of the block entity. - Mappings:
Namespace Name Mixin selector named canPlayerUseLnet/minecraft/inventory/Inventory;canPlayerUse(Lnet/minecraft/block/entity/BlockEntity;Lnet/minecraft/entity/player/PlayerEntity;F)Zintermediary method_49106Lnet/minecraft/class_1263;method_49106(Lnet/minecraft/class_2586;Lnet/minecraft/class_1657;F)Zofficial aLbqk;a(Ldqh;Lcmx;F)Z
-