Interface IForgeItemStack

All Superinterfaces:
ICapabilityProvider, ICapabilitySerializable<CompoundTag>, INBTSerializable<CompoundTag>
All Known Implementing Classes:
ItemStack

public interface IForgeItemStack extends ICapabilitySerializable<CompoundTag>
  • Method Details

    • self

      private ItemStack self()
    • getContainerItem

      default ItemStack getContainerItem()
      ItemStack sensitive version of getContainerItem. Returns a full ItemStack instance of the result.
      Returns:
      The resulting ItemStack
    • hasContainerItem

      default boolean hasContainerItem()
      ItemStack sensitive version of hasContainerItem
      Returns:
      True if this item has a 'container'
    • getBurnTime

      default int getBurnTime(@Nullable RecipeType<?> recipeType)
      Returns:
      the fuel burn time for this itemStack in a furnace. Return 0 to make it not act as a fuel. Return -1 to let the default vanilla logic decide.
    • onItemUseFirst

      default InteractionResult onItemUseFirst(UseOnContext context)
    • serializeNBT

      default CompoundTag serializeNBT()
      Specified by:
      serializeNBT in interface INBTSerializable<CompoundTag>
    • canPerformAction

      default boolean canPerformAction(ToolAction toolAction)
      Queries if an item can perform the given action. See ToolActions for a description of each stock action
      Parameters:
      toolAction - The action being queried
      Returns:
      True if the stack can perform the action
    • onBlockStartBreak

      default boolean onBlockStartBreak(BlockPos pos, Player player)
      Called before a block is broken. Return true to prevent default block harvesting. Note: In SMP, this is called on both client and server sides!
      Parameters:
      pos - Block's position in world
      player - The Player that is wielding the item
      Returns:
      True to prevent harvesting, false to continue as normal
    • shouldCauseBlockBreakReset

      default boolean shouldCauseBlockBreakReset(ItemStack newStack)
      Called when the player is mining a block and the item in his hand changes. Allows to not reset blockbreaking if only NBT or similar changes.
      Parameters:
      newStack - The new stack
      Returns:
      True to reset block break progress
    • canApplyAtEnchantingTable

      default boolean canApplyAtEnchantingTable(Enchantment enchantment)
      Checks whether an item can be enchanted with a certain enchantment. This applies specifically to enchanting an item in the enchanting table and is called when retrieving the list of possible enchantments for an item. Enchantments may additionally (or exclusively) be doing their own checks in Enchantment.canApplyAtEnchantingTable(ItemStack); check the individual implementation for reference. By default this will check if the enchantment type is valid for this item type.
      Parameters:
      enchantment - the enchantment to be applied
      Returns:
      true if the enchantment can be applied to this item
    • getItemEnchantability

      default int getItemEnchantability()
      ItemStack sensitive version of getItemEnchantability
      Returns:
      the item echantability value
    • getEquipmentSlot

      @Nullable default EquipmentSlot getEquipmentSlot()
      Override this to set a non-default armor slot for an ItemStack, but do not use this to get the armor slot of said stack; for that, use LivingEntity.getEquipmentSlotForItem(ItemStack).
      Returns:
      the armor slot of the ItemStack, or null to let the default vanilla logic as per LivingEntity.getSlotForItemStack(stack) decide
    • canDisableShield

      default boolean canDisableShield(ItemStack shield, LivingEntity entity, LivingEntity attacker)
      Can this Item disable a shield
      Parameters:
      shield - The shield in question
      entity - The LivingEntity holding the shield
      attacker - The LivingEntity holding the ItemStack
      Returns:
      True if this ItemStack can disable the shield in question.
    • isShield

      @Deprecated(since="1.17.1", forRemoval=true) default boolean isShield(@Nullable LivingEntity entity)
      Deprecated, for removal: This API element is subject to removal in a future version.
      To be removed in 1.18. Call canPerformAction(ToolAction) with ToolActions.SHIELD_BLOCK instead.
      Returns true if this item is considered a shield.
      Parameters:
      entity - the entity holding the item stack
      Returns:
      true if this item is considered a shield
    • onEntitySwing

      default boolean onEntitySwing(LivingEntity entity)
      Called when a entity tries to play the 'swing' animation.
      Parameters:
      entity - The entity swinging the item.
      Returns:
      True to cancel any further processing by EntityLiving
    • onUsingTick

      default void onUsingTick(LivingEntity player, int count)
      Called each tick while using an item.
      Parameters:
      player - The Player using the item
      count - The amount of time in tick the item has been used for continuously
    • getEntityLifespan

      default int getEntityLifespan(Level world)
      Retrieves the normal 'lifespan' of this item when it is dropped on the ground as a EntityItem. This is in ticks, standard result is 6000, or 5 mins.
      Parameters:
      world - The world the entity is in
      Returns:
      The normal lifespan in ticks.
    • onEntityItemUpdate

      default boolean onEntityItemUpdate(ItemEntity entity)
      Called by the default implemetation of EntityItem's onUpdate method, allowing for cleaner control over the update of the item without having to write a subclass.
      Parameters:
      entity - The entity Item
      Returns:
      Return true to skip any further update code.
    • getXpRepairRatio

      default float getXpRepairRatio()
      Determines the amount of durability the mending enchantment will repair, on average, per point of experience.
    • onArmorTick

      default void onArmorTick(Level world, Player player)
      Called to tick armor in the armor slot. Override to do something
    • onHorseArmorTick

      default void onHorseArmorTick(Level world, Mob horse)
      Called every tick from Horse#playGallopSound(SoundEvent) on the item in the armor slot.
      Parameters:
      world - the world the horse is in
      horse - the horse wearing this armor
    • canEquip

      default boolean canEquip(EquipmentSlot armorType, Entity entity)
      Determines if the specific ItemStack can be placed in the specified armor slot, for the entity.
      Parameters:
      armorType - Armor slot to be verified.
      entity - The entity trying to equip the armor
      Returns:
      True if the given ItemStack can be inserted in the slot
    • isBookEnchantable

      default boolean isBookEnchantable(ItemStack book)
      Allow or forbid the specific book/item combination as an anvil enchant
      Parameters:
      book - The book
      Returns:
      if the enchantment is allowed
    • onDroppedByPlayer

      default boolean onDroppedByPlayer(Player player)
      Called when a player drops the item into the world, returning false from this will prevent the item from being removed from the players inventory and spawning in the world
      Parameters:
      player - The player that dropped the item
    • getHighlightTip

      default Component getHighlightTip(Component displayName)
      Allow the item one last chance to modify its name used for the tool highlight useful for adding something extra that can't be removed by a user in the displayed name, such as a mode of operation.
      Parameters:
      displayName - the name that will be displayed unless it is changed in this method.
    • getShareTag

      @Nullable default CompoundTag getShareTag()
      Get the NBT data to be sent to the client. The Item can control what data is kept in the tag. Note that this will sometimes be applied multiple times, the following MUST be supported: Item item = stack.getItem(); NBTTagCompound nbtShare1 = item.getNBTShareTag(stack); stack.setTagCompound(nbtShare1); NBTTagCompound nbtShare2 = item.getNBTShareTag(stack); assert nbtShare1.equals(nbtShare2);
      Returns:
      The NBT tag
    • readShareTag

      default void readShareTag(@Nullable CompoundTag nbt)
      Override this method to decide what to do with the NBT data received from getNBTShareTag().
      Parameters:
      nbt - Received NBT, can be null
    • doesSneakBypassUse

      default boolean doesSneakBypassUse(LevelReader world, BlockPos pos, Player player)
      Should this item, when held, allow sneak-clicks to pass through to the underlying block?
      Parameters:
      world - The world
      pos - Block position in world
      player - The Player that is wielding the item
      Returns:
    • areShareTagsEqual

      default boolean areShareTagsEqual(ItemStack other)
      Modeled after ItemStack.areItemStackTagsEqual Uses Item.getNBTShareTag for comparison instead of NBT and capabilities. Only used for comparing itemStacks that were transferred from server to client using Item.getNBTShareTag.
    • equals

      default boolean equals(ItemStack other, boolean limitTags)
      Determines if the ItemStack is equal to the other item stack, including Item, Count, and NBT.
      Parameters:
      other - The other stack
      limitTags - True to use shareTag False to use full NBT tag
      Returns:
      true if equals
    • isRepairable

      default boolean isRepairable()
      Determines if a item is reparable, used by Repair recipes and Grindstone.
      Returns:
      True if reparable
    • isPiglinCurrency

      default boolean isPiglinCurrency()
      Called by Piglins when checking to see if they will give an item or something in exchange for this item.
      Returns:
      True if this item can be used as "currency" by piglins
    • makesPiglinsNeutral

      default boolean makesPiglinsNeutral(LivingEntity wearer)
      Called by Piglins to check if a given item prevents hostility on sight. If this is true the Piglins will be neutral to the entity wearing this item, and will not attack on sight. Note: This does not prevent Piglins from becoming hostile due to other actions, nor does it make Piglins that are already hostile stop being so.
      Parameters:
      wearer - The entity wearing this ItemStack
      Returns:
      True if piglins are neutral to players wearing this item in an armor slot
    • isEnderMask

      default boolean isEnderMask(Player player, EnderMan endermanEntity)
      Whether this Item can be used to hide player head for enderman.
      Parameters:
      player - The player watching the enderman
      endermanEntity - The enderman that the player look
      Returns:
      true if this Item can be used.
    • canElytraFly

      default boolean canElytraFly(LivingEntity entity)
      Used to determine if the player can use Elytra flight. This is called Client and Server side.
      Parameters:
      entity - The entity trying to fly.
      Returns:
      True if the entity can use Elytra flight.
    • elytraFlightTick

      default boolean elytraFlightTick(LivingEntity entity, int flightTicks)
      Used to determine if the player can continue Elytra flight, this is called each tick, and can be used to apply ItemStack damage, consume Energy, or what have you. For example the Vanilla implementation of this, applies damage to the ItemStack every 20 ticks.
      Parameters:
      entity - The entity currently in Elytra flight.
      flightTicks - The number of ticks the entity has been Elytra flying for.
      Returns:
      True if the entity should continue Elytra flight or False to stop.
    • getSweepHitBox

      @Nonnull default AABB getSweepHitBox(@Nonnull Player player, @Nonnull Entity target)
      Get a bounding box (AABB) of a sweep attack.
      Parameters:
      player - the performing the attack the attack.
      target - the entity targeted by the attack.
      Returns:
      the bounding box.