Interface FabricItem
Item
subclasses.
Note: This interface is automatically implemented on all items via Mixin and interface injection.
Note to maintainers: Functions should only be added to this interface if they are general-purpose enough, to be evaluated on a case-by-case basis. Otherwise, they are better suited for more specialized APIs.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interface
Fabric-provided extensions forItem.Settings
. -
Method Summary
Modifier and TypeMethodDescriptiondefault boolean
allowComponentsUpdateAnimation
(PlayerEntity player, Hand hand, ItemStack oldStack, ItemStack newStack) When the components of an item stack in the main hand or off hand changes, vanilla runs an "update animation".default boolean
allowContinuingBlockBreaking
(PlayerEntity player, ItemStack oldStack, ItemStack newStack) When the components of the selected stack changes, block breaking progress is reset.default com.google.common.collect.Multimap
<RegistryEntry<EntityAttribute>, EntityAttributeModifier> getAttributeModifiers
(ItemStack stack, EquipmentSlot slot) Return the attribute modifiers to apply when this stack is worn in a living entity equipment slot.default ItemStack
getRecipeRemainder
(ItemStack stack) Returns a leftover item stack afterstack
is consumed in a recipe.
-
Method Details
-
allowComponentsUpdateAnimation
default boolean allowComponentsUpdateAnimation(PlayerEntity player, Hand hand, ItemStack oldStack, ItemStack newStack) When the components of an item stack in the main hand or off hand changes, vanilla runs an "update animation". This function is called on the client side when the components or count of the stack has changed, but not the item, and returning false cancels this animation.- Parameters:
player
- the current player; this may be safely cast toClientPlayerEntity
in client-only codehand
- the hand; this function applies both to the main hand and the off handoldStack
- the previous stack, of this itemnewStack
- the new stack, also of this item- Returns:
- true to run the vanilla animation, false to cancel it.
-
allowContinuingBlockBreaking
default boolean allowContinuingBlockBreaking(PlayerEntity player, ItemStack oldStack, ItemStack newStack) When the components of the selected stack changes, block breaking progress is reset. This function is called when the components of the selected stack has changed, and returning true allows the block breaking progress to continue.- Parameters:
player
- the player breaking the blockoldStack
- the previous stack, of this itemnewStack
- the new stack, also of this item- Returns:
- true to allow continuing block breaking, false to reset the progress.
-
getAttributeModifiers
default com.google.common.collect.Multimap<RegistryEntry<EntityAttribute>,EntityAttributeModifier> getAttributeModifiers(ItemStack stack, EquipmentSlot slot) Return the attribute modifiers to apply when this stack is worn in a living entity equipment slot. Stack-aware version ofItem.getAttributeModifiers(EquipmentSlot)
.Note that attribute modifiers are only updated when the stack changes, i.e. when
ItemStack.areEqual(old, new)
is false.- Parameters:
stack
- the current stackslot
- the equipment slot this stack is in- Returns:
- the attribute modifiers
-
getRecipeRemainder
Returns a leftover item stack afterstack
is consumed in a recipe. (This is also known as "recipe remainder".) For example, using a lava bucket in a furnace as fuel will leave an empty bucket.Here is an example for a recipe remainder that increments the item's damage.
if (stack.getDamage() < stack.getMaxDamage() - 1) { ItemStack moreDamaged = stack.copy(); moreDamaged.setDamage(stack.getDamage() + 1); return moreDamaged; } return ItemStack.EMPTY;
This is a stack-aware version of
Item.getRecipeRemainder()
.Note that simple item remainders can also be set via
Item.Settings.recipeRemainder(Item)
.If you want to get a remainder for a stack, is recommended to use the stack version of this method:
FabricItemStack.getRecipeRemainder()
.- Parameters:
stack
- the consumedItemStack
- Returns:
- the leftover item stack
-