Item components

From Minecraft Wiki
Jump to navigation Jump to search
This article is about item components. For block components, see Block components. For the format of item components in Java Edition, see Data component format.
This feature is exclusive to Bedrock Edition.
 

Item components are JSON formatted for items in add-ons used to change how your item looks and functions in the world, and also have NBT components that also work on vanilla items.

Applying components

[edit | edit source]

They are applied within the components field within the minecraft:item field, components can also be applied to vanilla items, but unlike custom items they are limited to a few components.

Component types

[edit | edit source]

minecraft:allow_off_hand

[edit | edit source]

Allows the item to be placed in the offhand but does not allow use of the item.

It has no field, it must be a boolean value being either true or false.

Example:

"minecraft:allow_off_hand": true

minecraft:block_placer

[edit | edit source]

Allows the item to place blocks when used, if used in survival the item is consumed.

The available fields are:

  • block:
    • Defines the block that will be positioned.
  • replace_block_item:
    • Defines whether the item will replace the block, it can be true or false if it is true the block and the item must have the same identifier and the minecraft:icon field can be omitted merging the two into one thing.
  • use_on:
    • List of block descriptors that contain blocks this item can be used on. If left blank, all blocks will be allowed. This also applies to Creative mode.

Example:

"minecraft:block_placer": {
    "block": "wiki:custom_block",
    "replace_block_item": true,
    "use_on": [
        "minecraft:dirt",
        "wiki:custom_dirt"
    ]
}

minecraft:bundle_interaction

[edit | edit source]

Enables the bundle interface and functionality on the item. The item must have the minecraft:storage_item component for this component to work.

The available fields are:

  • num_viewable_slots:
    • Sets the maximum number of visible item stacks between 1 and 64 from the pack tooltip going from right to left.

Example:

"minecraft:bundle_interaction": {
    "num_viewable_slots": 12
}

minecraft:compostable

[edit | edit source]

Allows an item to be used in a composter.

The available fields are:

  • composting_chance:
    • Sets the chance to increase the level of the compost can be a value between 0 and 100.

Example:

"minecraft:compostable": {
    "composting_chance": 50 // 50% chance to increase compost bin level
}

minecraft:cooldown

[edit | edit source]

Cooldown component. After use, all items in a specified "cooldown category" become unusable for a period of time specified in the component. The item must have the minecraft:use_modifiers component for this component to work.

The available fields are:

  • category:
    • The item's cooldown category.
  • duration:
    • The cooldown duration (in seconds) that items with a matching category will take to charge before becoming usable again, if this value is a negative number the item will become unusable.
  • type:
    • Defines the action to which the cooldown applies, in a mutually exclusive manner. The cooldown of one type of action does not affect the other. This can be:
      • use — activates the cooldown only when using the item, allowing other actions.
      • attack — activates cooldown when attacking, preventing further attacks until time runs out.

Example:

"minecraft:cooldown": {
    "category": "spear",
    "duration": 1.0,
    "type": "attack"
}

minecraft:damage

[edit | edit source]

Defines how much extra damage the item deals in an attack, the value must be positive.

The available fields are:

  • Any positive number, the actual damage is always the set value + 1, values between 0 and 32.767 are read.

Example:

"minecraft:damage": 10

minecraft:damage_absorption

[edit | edit source]

Causes the item to absorb damage that would otherwise be dealt to the entity wearing it. For this to happen, the item must have the minecraft:durability component and be equipped in an armor slot.

The available fields are:

  • absorbable_causes:
    • List of damage deals (such as entity_attack and magma) that can be absorbed by the item.

Example:

"minecraft:damage_absorption": {
    "absorbable_causes": ["all"]
}

minecraft:digger

[edit | edit source]

Determine how quickly an item can break specific blocks.

The available fields are:

  • destroy_speeds:
    • List of blocks to break, with correlated extraction speeds.
      • block — which block the item will break, and you can put the tags entry for a molang query.
      • speed — how fast the block will be broken, accepting negative values if it is negative the item will never break the block.
  • use_efficiency:
    • Defines whether the item should be affected if the efficiency enchantment is applied to it. Can be true or false.

Example:

"minecraft:digger": {
    "use_efficiency": true,
    "destroy_speeds": [
        {
            "block": {
                "tags": "q.any_tag('stone', 'metal')" // Note that not all blocks have tags; you may need to list many blocks.
            },
            "speed": 6
        },
        {
            "block": "minecraft:grass_block",
            "speed": 7
        }
    ]
}

minecraft:display_name

[edit | edit source]

Sets the text displayed when an item's name is displayed.

The available fields are:

  • value:
    • It can be any word for fixed text, or a translation key that must be specified in the language file.

Example:

"minecraft:display_name": {
    "value": "secret weapon"
}

Example with translation key:

"minecraft:display_name": {
    "value": "item.snowball.name"
}

minecraft:durability

[edit | edit source]

It sets the item's durability and also allows the item to be repaired with the combination of the same item on the crafting table and on the grindstone and on the anvil. When breaking a block, durability is not spent, requiring the use of the Script API, however, it loses durability when attack any mob, losing 2 durability points. If you use the minercraft:wearable component, it loses 1 durability when attack mobs.

The available fields are:

  • damage_chance:
    • An object that has min and max fields that define the probability of the item losing durability working in conjunction with the Unbreaking enchantment must be a value from 0 to 100.
  • max_durability
    • Sets the total durability of the item with a minimum value of 0 and a maximum of 32767. Values greater than this are considered negative and do not work.

Example:

"minecraft:durability": {
    "damage_chance": {
        "min": 0,
        "max": 100
    },
    "max_durability": 100
}

minecraft:durability_sensor

[edit | edit source]

Allows an item to emit sound effects and particles when reaching a specific level of durability.

The available fields are:

  • durability_thresholds: Base object to place the sub fields.
    • durability: A value at which the effect will be emitted when it is less than or equal to the set value.
    • particle_type: The particle effect to be emitted.
    • sound_event: The sound effect to be emitted.

Example:

"minecraft:durability_sensor": {
  "durability_thresholds": [
    {
      "durability": 100,
      "particle_type": "minecraft:explosion_manual",
      "sound_event": "blast"
    },
    {
      "durability": 5,
      "sound_event": "raid.horn"
     }
    ]
}

minecraft:dyeable

[edit | edit source]

Allows an item to be dyed in a cauldron with water like leather armor, when dyed it uses the dyed field of the minecraft:icon component.

The available fields are:

  • default_color:
    • Optional color to use by default before player dyes item, needs to be a color in hexadecimal format.

Example:

"minecraft:dyeable": {
    "default_color": "#ffffff"
}

minecraft:enchantable

[edit | edit source]

Determines whether the item can be enchanted and which enchantments can be applied to the item.

The available fields are:

  • slot:
    • Which enchantments can be applied, the only non-existent category is for mace enchantments, for this you must use the all category (ex: Using bow would allow this item to be enchanted as if it were a bow).
  • value:
    • The minimum enchantment value is 0 and the maximum is 256, it determines the enchantability of the item, influencing the quality and quantity of potential enchantments. Higher values increase the chance of granting more powerful enchantments. See Enchantability for vanilla values.

Example:

"minecraft:enchantable": {
    "slot": "sword",
    "value": 10
}

minecraft:entity_placer

[edit | edit source]

Allows the item to place specific entitys into the world.

The available fields are:

  • dispense_on:
    • List of block descriptors that contain blocks on which the dispenser can use this item. If left blank, all blocks will be allowed.
  • entity:
    • The entity the item will place on.
  • use_on:
    • List of block descriptors that contain blocks this item can be used on. If left blank, all blocks are allowed.

Example:

"minecraft:entity_placer": {
  "entity": "minecraft:spider",
  "dispense_on": [
    "minecraft:dirt"
  ],
  "use_on": [
    "minecraft:dirt"
  ]
}

minecraft:fire_resistant

[edit | edit source]

Determines whether items should be able to resist fire and lava instead of being destroyed like any netherite item.

The available fields are:

  • value:
    • It can be true or false to define whether or not the item resists fire and lava.

Example:

"minecraft:fire_resistant": {
    "value": true
}

minecraft:food

[edit | edit source]

Allows the item to be edible as a food. It requires the minecraft:use_modifiers component to work properly. To display an eating/drinking animation, also apply the minecraft:use_animation component to the item.

The available fields are:

  • can_always_eat:
    • If true you can always eat this item (even when you are not hungry).
  • nutrition:
    • The value that is added to the player's nutrition when the item is used, which can be a negative value, with a maximum of 107374180 as it is the maximum 32-bit value.
  • saturation_modifier:
    • A 32-bit integer value that defines the saturation modification value that uses the calculation (nutrition × saturation_modifier × 2) applying the saturation value.
  • using_converts_to:
    • When used, converts to the item specified by the string in this field, as with stew.

Example:

"minecraft:food": {
    "can_always_eat": false,
    "nutrition": 3,
    "saturation_modifier": 0.6,
    "using_converts_to": "bowl"
}

minecraft:fuel

[edit | edit source]

Allows the item to be used as fuel in a smelting block such as a furnace used to smelt other items.

The available fields are:

  • duration:
    • How long, in seconds, this fuel will smelt items in a furnace, minimum value being 0.05 and maximum value being 107374180 being the 32-bit limit value.

Example:

"minecraft:fuel": {
    "duration": 3.0
}

minecraft:glint

[edit | edit source]

Determines whether the item has the enchantment glint like an enchanted golden apple.

It has no field, it must be a boolean value being either true or false.

Example:

"minecraft:glint": false

minecraft:hand_equipped

[edit | edit source]

Determines whether an item is rendered as a tool while in hand.

It has no field, it must be a boolean value being either true or false.

Example:

"minecraft:hand_equipped": true

minecraft:hover_text_color

[edit | edit source]

Determines the color of the item name overriding the rarity.

It has no field, it needs to be a string value with the color name, you can see all possible values here.

Example:

"minecraft:hover_text_color": "minecoin_gold"

minecraft:icon

[edit | edit source]

Determines the icon to represent the item in the UI and elsewhere, if replace_block_item is true of the minecraft:block_placer component this component can be omitted and it will use the block as the visual, this can be a string or an object.

The available fields if object are:

  • textures: This object contains the different textures that can be used for the item's icon. Armor textures and finish palettes can also be specified here, all specified in the item_texture.json file.
    • default:
      • The default icon for the item.
    • dyed:
    • icon_trim:
      • The icon overlay for when your item has a trim, by default it uses the icon corresponding to the slot defined in the minecraft:wearable component.
    • <material>_palette:
      • The color palette that the armor ornament will use for a certain material type must be a direct path to the texture.
    • bundle_open_back:
    • bundle_open_front:

Example with string:

"minecraft:icon": "wiki:custom_item"

Example with object:

"minecraft:icon": {
    "textures": {
        "default": "wiki:custom_item",
        "icon_trim": "wiki:custom_item_trim",
        "emerald_palette": "textures/trims/color_palettes/redstone_palette",
        "bundle_open_back": "bundle_blue_open_back",
        "bundle_open_front": "bundle_blue_open_front"
    }
}

minecraft:interact_button

[edit | edit source]

This component determines whether the interaction button is displayed on touch controls and what text is displayed on the button. When set to true, the default text "Use Item" will be used.

It has no field, it must be a boolean value being either true or false or a string with a text or translation key.

Example with string:

"minecraft:interact_button": "Use this custom item"

Example as boolean:

"minecraft:interact_button": true

minecraft:kinetic_weapon

[edit | edit source]

This item component is used to replicate the charged attack used on spears. Allows an item to inflict damage and other effects with each tick while in use, to all unobstructed targets found in a straight line from the user's field of vision. Damage is calculated based on the speed of the user and the target projected onto the line of sight; the faster the user and the target move towards each other, the greater the final damage. After applying "damage_multiplier" and "damage_modifier", the resulting damage is reduced to the nearest integer. Requires the minecraft:use_modifiers item component on the item.

The available fields are:

  • delay:
    • Mark to wait before applying damage and effects.
  • reach:
    • Defines the range along the view vector where entities can be reached.
  • creative_reach:
    • Defines the range used when the user is in Creative mode.
  • hitbox_size:
    • Defines the extra tolerance in raycast for detecting entities.
  • damage_multiplier:
    • Multiply the sum of the projected speeds.
  • damage_modifier:
    • Add to the multiplied sum of the projected speeds.
  • damage_conditions:
    • Conditions that must be met for the damage to be applied.
  • knockback_conditions:
    • Conditions that must be met for repulsion to be applied.
  • dismount_conditions:
    • Conditions that must be met for riders to be dismounted.

The fields available in damage_conditions, knockback_conditions, and dismount_conditions are:

  • max_duration:
    • Time, in ticks, during which the effect can be applied after the delay has elapsed.
  • min_speed:
    • Minimum user speed (projected onto the display vector via a dot product) required for the effect to be applied.
  • min_relative_speed:
    • Minimum relative speed of the user relative to the target (projected onto the view vector via a dot product) required for the effect to be applied.

Example:

"minecraft:kinetic_weapon": {
   "delay": 12,
   "reach": {
      "min": 2.0,
      "max": 4.5
   },
   "creative_reach": {
      "min": 2.0,
      "max": 7.5
   },
   "hitbox_margin": 0.25,
   "damage_multiplier": 0.95,
   "damage_conditions": {
      "max_duration": 225,
      "min_relative_speed": 4.6
   },
   "knockback_conditions": {
      "max_duration": 90,
      "min_speed": 5.1
   },
   "dismount_conditions": {
      "max_duration": 50,
      "min_speed": 11.0
   }
 }

minecraft:liquid_clipped

[edit | edit source]

Determines whether an item interacts with liquid blocks when used. When interacting with liquid, outline selection cannot highlight any blocks below it. The interaction occurs within the liquid block, not on its sides.

It has no field, it must be a boolean value being either true or false.

Example:

"minecraft:liquid_clipped": true

minecraft:max_stack_size

[edit | edit source]

Determines how many of the same item can be stacked.

The available fields are:

  • There are no fields, it must be a number with a minimum of 1 and a maximum of 64.

Example:

"minecraft:max_stack_size": 64

minecraft:piercing_weapon

[edit | edit source]

This item component is used to replicate the jab attack used in spears. Allows the item to damage all entities detected in a straight line along the user's field of vision. Items with this component cannot destroy blocks, as the attack action always takes priority.

The available fields are:

  • reach:
    • Defines the range along the view vector where entities can be reached.
  • hitbox_size:
    • Defines the extra tolerance in raycast for detecting entities.
  • creative_reach:
    • Defines the range used when the user is in Creative mode.

Example:

"minecraft:piercing_weapon": {
  "reach": {
    "min": 2.0,
    "max": 4.5
  },
  "creative_reach": {
    "min": 2.0,
    "max": 7.5
  },
  "hitbox_margin": 0.25
}

minecraft:projectile

[edit | edit source]

Projectile item component. Projectile items are fired like an arrow.

The available fields are:

  • minimum_critical_power:
    • Sets the time a projectile needs to charge to cause a critical hit.
  • projectile_entity:
    • The entity to fire as a projectile. If no namespace is specified, it is assumed to be minecraft.

Example:

"minecraft:projectile": {
    "minimum_critical_power": 1.25,
    "projectile_entity": "arrow"
}

minecraft:rarity

[edit | edit source]

Represents the item's difficulty to obtain by changing the color of its name text. This component has no effect if minecraft:hover_text_color is also applied. The item's rarity will be increased if it is enchanted. See rarity for vanilla values.

It has no field, it must be a string value being common for the white name, uncommon for the yellow name, rare for the aqua blue name and epic for the light purple name.

Example:

"minecraft:rarity": "rare"

minecraft:record

[edit | edit source]

Allows the item to play a sound like a music disc when used in a jukebox, when used the item always turns its name color to aqua blue.

The available fields are:

  • comparator_signal:
    • Redstone signal intensity for use in comparator blocks can be any value including negative values, but only values from 0-15 work.
  • duration:
    • Duration of the sound event in seconds, can be any value.
  • sound_event:
    • Sound event type, if it is a sound from a vanilla music album, the name of the album's author will be added, only vanilla sound events are allowed for use.

Example:

"minecraft:record": {
  "comparator_signal": 1,
  "duration": 5,
  "sound_event": "ambient.tame"
}

minecraft:repairable

[edit | edit source]

Determines which items can be used to repair a specified item, as well as the amount of durability the specified items will repair. By default, any item that has durability can be repaired by itself; setting it to repair in this component will override the vanilla calculation.

The available fields are:

  • repair_items: List of item entries to repair.
    • repair_amount:
      • How much durability is repaired, can be an integer value or a Molang expression, being able to use math.random and context.other to get the second slot.
    • items:
      • The item used to repair the item that has the component.

Example:

"minecraft:repairable":{
    "repair_items": [
        {
            "items":[
                "minecraft:diamond"
            ],
            "repair_amount": 10
        },
        {
            "items":[
                "minecraft:stick"
            ],
            "repair_amount": "math.random(1,10)"
        },
        {
            "items":[
                "minecraft:apple"
            ],
            "repair_amount": "math.min(q.remaining_durability + c.other->q.remaining_durability + math.floor(q.max_durability /20), c.other->q.max_durability)"
        }
    ]
}

minecraft:shooter

[edit | edit source]

Used to shoot projectiles like a bow. Must have the minecraft:use_modifiers component to work properly.

The available fields are:

  • ammunition: Input list used to set ammunition and priority.
    • item:
    • use_offhand:
      • Can be true or false, allows the ammunition to be used in the offhand.
    • search_inventory:
      • Can be true or false, determines whether it is possible to search for ammunition in the inventory, mandatory to be true in survival and in creative if use_in_creative is true.
    • use_in_creative:
      • Can be true or false, allows the ammo to be used in creative.
  • charge_on_draw:
    • Can be true or false, defines whether the item is carried when drawn, if the item uses minecraft:use_modifiers it must have use_duration greater than or equal to max_draw_duration.
  • max_draw_duration:
    • Determines how long the weapon can be drawn before it is automatically released.
  • scale_power_by_draw_duration:
    • It can be true or false, when true the longer the weapon is drawn, the more power it will have when released.

Example:

"minecraft:shooter": {
    "ammunition": [
        {
            "item": "custom_projectile",
            "use_offhand": true,
            "search_inventory": true,
            "use_in_creative": true
        }
    ],
    "max_draw_duration": 1.0,
    "scale_power_by_draw_duration": true,
    "charge_on_draw": false
}

minecraft:should_despawn

[edit | edit source]

Determines whether an item should eventually despawn while floating in the world.

It has no field, it must be a boolean value being either true or false.

Example:

"minecraft:should_despawn": true

minecraft:stacked_by_data

[edit | edit source]

Determines whether the same item with different auxiliary values can be stacked. Additionally, it determines whether the item's actors can be merged while floating in the world.

It has no field, it must be a boolean value being either true or false.

Example:

"minecraft:stacked_by_data": true

minecraft:storage_item

[edit | edit source]

Allows the item to act as a container and store other items as a bundle. The item must not stack for this component to work.

The available fields are:

  • allow_nested_storage_items:
    • Determines whether other storage items can be placed in the container can be true or false.
  • allowed_items:
    • Defines the items that are allowed exclusively in the container. If empty or omitted, all items are allowed in the container.
  • banned_items:
    • Defines items that are not allowed exclusively in the container.
  • max_slots:
    • Sets the number of slots in the container to a minimum of 1 and a maximum of 64.
  • max_weight_limit:
    • An integer.

Example:

"minecraft:storage_item": {
    "max_slots": 64,
    "allow_nested_storage_items": true,
    "banned_items": [
        "minecraft:shulker_box",
        "minecraft:undyed_shulker_box"
    ]
}

minecraft:storage_weight_limit

[edit | edit source]

Sets the maximum allowed total weight of all items in the storage item container. The item must have the minecraft:storage_item component for this component to work.

  • To calculate the weight of an item, divide 64 by the maximum number of stacked items. If there are 64, each item weighs 1. If there are 16, each item weighs 4. If there are 1, each item weighs 64.

The available fields are:

  • max_weight_limit:
    • An integer.

Example:

"minecraft:storage_weight_limit": {
    "max_weight_limit": 64
}

minecraft:storage_weight_modifier

[edit | edit source]

Sets the additional weight the item adds when it is inside another storage item.

The available fields are:

  • weight_in_storage_item:
    • An integer between 0 and 64 a value of 0 does not allow the item to be used in a storage item.

Example:

"minecraft:storage_weight_modifier": {
    "weight_in_storage_item": 4
}

minecraft:swing_duration

[edit | edit source]

Determines the duration, in seconds, of the player's arm swing animation when drawing, attacking, or using an item. It only affects the visuals and does not impact the frequency of attacks or the game mechanics.

The available fields are:

  • value:
    • The duration in seconds of the arm's swing.

Example:

"minecraft:swing_duration": {
  "value": 1.05
}

minecraft:swing_sounds

[edit | edit source]

Allows you to cancel user-generated swing sounds and emit sounds defined in the component; only vanilla sounds are allowed for use.

The available fields are:

  • attack_miss:
    • Sound played when an attack misses or does not cause damage due to invulnerability.
  • attack_hit:
    • Sound played when an attack hits.
  • attack_critical_hit:
    • Sound played when an attack hits and deals critical damage.

Example:

"minecraft:swing_sounds": {
  "attack_miss": "item.spear.attack_miss",
  "attack_hit": "item.spear.attack_hit"
}

minecraft:tags

[edit | edit source]

Sets the tag for an item, which can be vanilla or custom, for the list of vanilla tags see item tag.

The available fields are:

  • tags:
    • List of tags that the item has.

Example:

"minecraft:tags": {
    "tags": [
        "custom_tag"
    ]
}

minecraft:throwable

[edit | edit source]

Defines throwable items, such as a snowball. The item must have the minecraft:projectile component otherwise it will not work.

The available fields are:

  • do_swing_animation:
    • Whether the item should use the arm swing animation when thrown can be either true or false.
  • launch_power_scale:
    • The scale at which the throwing power increases, which can be negative, ending up throwing the item in the opposite direction.
  • max_draw_duration:
    • The maximum time to throw the throwable item, it can be negative if it is negative it throws instantly.
  • max_launch_power:
    • The maximum power to throw the throwable item, which can be negative.
  • min_draw_duration:
    • The minimum time to throw the throwable item, can be negative if it is negative it throws instantly.
  • scale_power_by_draw_duration:
    • Whether or not the power of the throw increases with the duration of the charge. It can be true or false, if it is true it will take the time into consideration, that is, the longer you hold it, the more power it will have when thrown.

Example:

"minecraft:throwable": {
    "do_swing_animation": false,
    "launch_power_scale": 1.0,
    "max_draw_duration": 0.0,
    "max_launch_power": 1.0,
    "min_draw_duration": 0.0,
    "scale_power_by_draw_duration": false
}

minecraft:use_animation

[edit | edit source]

Defines which animation will happen when using the item.

The available fields are:

  • There are no fields, it must be a string value and can be eat, drink, bow, block, camera, crossbow, none, brush, spear and spyglass.

Example:

"minecraft:use_animation": "eat"

minecraft:use_modifiers

[edit | edit source]

Modifies usage effects, including the time it takes for an item to be used and the player's speed when used in combination with components such as Shooter, Throwable, or Food.

The available fields are:

  • movement_modifier:
    • Modifier value to scale players' movement speed when the item is in use, sensing a value between 0 and 1.
  • use_duration:
    • How long in seconds it takes to use the item.
  • emit_vibrations:
    • Controls whether an item vibrates when it starts or stops being used; can be true or false.
  • start_sound:
    • Defines the sound to be played when starting to use the item only vanilla sounds are allowed for use.

Example:

"minecraft:use_modifiers": {
  "movement_modifier": 0.5,
  "use_duration": 1.0,
  "emit_vibrations": false,
  "start_sound": "item.spear.use"
}

minecraft:wearable

[edit | edit source]

Determines where the item can be used. If any slot other than the hand slot is selected, the maximum item stack value is set to 1.

The available fields are:

  • slot:
    • Defines the slot in which the item can be used, which can be slot.weapon.offhand, slot.armor.head, slot.armor.chest, slot.armor.legs and slot.armor.feet i.e. offhand, head, chestplate, leggings and feet. It is also used for the armor trim icon and for the tooltip to show the armor value.​[upcoming BE 26.0]
  • protection:
    • How much protection the item will provide the player when used. Displayed in the item's tooltip.​[upcoming BE 26.0]
  • hides_player_location:
    • Determines whether or not to hide the player's location on locator maps and in the locator bar when used. Can be either true or false.

Example:

"minecraft:wearable": {
    "slot": "slot.armor.chest",
    "protection": 10,
    "hides_player_location": false
}

Custom components

[edit | edit source]

Custom item components allow for custom items to take advantage of script API capabilities. Custom components are registered in scripts using the method StartupEvent.itemComponentRegistry.registerCustomComponent().

Custom components can be added to items the same way as any other component, using the namespaced identifier the component was registered with. Custom components can have arguments of any type, which will be passed to scripts as the second argument.

Examples:

"example_namespace:example_component": "foo",
"example_namespace:example_component2": 4,
"example_namespace:example_component3": [ "hello", "world" ],
"example_namespace:example_component4": true,
"example_namespace:example_component5": {
  "stuff": 4
}

In scripts, the custom component object can have methods added to listen to any amount of the following events[1]:

  • onBeforeDurabilityDamage: Called when the item hits an entity and is about to take durability damage.
  • onCompleteUse: Called when the item's use duration was completed.
  • onConsume: Called when the item is eaten by an entity.
  • onHitEntity: Called when the item is used to hit an entity.
  • onMineBlock: Called when the item is used to mine a block.
  • onUse: Called when the item is used by a player.
  • onUseOn: Called when the item is used on a block.

NBT Components

[edit | edit source]

Item NBT components are a little different from regular components, they are stored internally by the game and can only be modified by commands like /give or /replaceitem much like Java Edition data components.

The available NBT components are minecraft:can_place_on, minecraft:can_destroy, minecraft:item_lock and minecraft:keep_on_death.

minecraft:can_place_on

[edit | edit source]

Controls what types of blocks this block can be placed on. This allows blocks to be placed in adventure mode without the use of allow blocks.

Example: /give @s cobblestone 64 0 {"minecraft:can_place_on":{"blocks":["stained_glass:2"]}}

minecraft:can_destroy

[edit | edit source]

Controls what types of blocks this item can destroy.

Example: /give @a wooden_axe 16 0 {"minecraft:can_destroy":{"blocks":["wool:5"]}}

minecraft:item_lock

[edit | edit source]

Locks the item in the player's inventory depending on the chosen mode. Having the mode parameter that specifies the lock type. Which can be lock_in_inventory or lock_in_slot.[2]

lock_in_inventory

[edit | edit source]

The texture used on the item.

Prevents the item from being dropped, removed from inventory, used as a crafting ingredient, placed in a bundle, or renamed on an anvil. It displays a yellow triangle in the top corner of the item.

Example: /give @p diamond_axe 1 0 {"minecraft:item_lock":{"mode":"lock_in_inventory"}}

lock_in_slot

[edit | edit source]

The texture used on the item.

Prevents the item from being moved or removed from its slot in the player's inventory, dropped, placed stacked, and used as a crafting ingredient. It displays a red triangle in the top corner of the item.

Example: /give @p wooden_pickaxe 1 0 {"minecraft:item_lock":{"mode":"lock_in_slot"}}

keep_on_death

[edit | edit source]

Prevents the item from being dropped when the entity dies.

Example: /give @s cooked_beef 1 0 {"minecraft:keep_on_death":{}}

History

[edit | edit source]
This section is missing information about: Information about components before version 1.19.60.
 
Please expand the section to include this information. Further details may exist on the talk page.
Bedrock Edition
?Item components were added.
1.19.60
Experiment
Holiday Creator Features
Preview 1.19.60.23Expanded minecraft:shooter component to define multiple projectiles that can specify different projectile definitions and condition filters.
Exposed more fields to shooter component to allow for more projectile customization such as throw power, sounds, and whether the attack is a magic attack.
1.20.0
Experiment
Holiday Creator Features
Preview 1.20.0.20Items with the component minecraft:entity_placer will now successfully spawn the creature on air blocks if the dispense_on field is empty.
Now, items with the minecraft:entity_placer component can be used in a monster spawner to change the spawner's creature generation type. The item must have a version format equal to or greater than 1.19.80.
The non-functional parameter on_repaired has been removed from the item component minecraft:repairable.
The item component minecraft:dye_powder has been removed.
Preview 1.20.0.21Custom items with minecraft:durability and minecraft:repairable can now be combined to be repaired without the need for a custom item entry.
Preview 1.20.0.22The item component minecraft:knockback_resistance has been removed.
Custom items with minecraft:record display the correct sound description in the text when hovering over them and when played in a jukebox.
Preview 1.20.0.23Items with the minecraft:throwable component now trigger the throwing sound effect when used.
Items that use the minimum duration for the minecraft:fuel component now work in the blast furnace and smoker.
1.20.0Preview 1.20.0.23The following experimental item components were released in JSON format 1.20.0 and higher: minecraft:display_name, minecraft:durability, minecraft:fuel, minecraft:entity_placer and minecraft:icon.
1.20.10Preview 1.20.10.20The following experimental item components have been released in JSON formats 1.20.10 and higher: minecraft:cooldown and minecraft:repairable.
1.20.10
Experiment
Holiday Creator Features
Preview 1.20.10.20Items containing the minecraft:block_placer component will now place blocks with the correct orientation.
Items in version 1.20.10 and higher with the minecraft:throwable component will trigger Item Usage events when thrown.
Custom items with minecraft:block_placer will no longer place certain blocks in the wrong location.
Changed the minecraft:shooter to consume ammunition only when charging the item if charge_on_draw is set to true.
1.20.10Preview 1.20.10.21Items containing the minecraft:block_placer component will now place blocks with the correct orientation.
The item component minecraft:max_stack_size was released from the experimental version to JSON formats starting with Minecraft version 1.20.10.
Custom items containing minecraft:block_placer will no longer place certain blocks in the wrong location.
The item component minecraft:block_placer was released from the experimental version to JSON formats starting with version 1.20.10.
The item component minecraft:record was released from the experimental version to JSON formats starting with version 1.20.10.
Preview 1.20.10.23The following experimental item components were released in JSON formats 1.20.10 and higher: minecraft:shooter, minecraft:throwable, minecraft:projectile, minecraft:can_destroy_in_creative and minecraft:hover_text_color.
1.20.10
Experiment
Holiday Creator Features
Preview 1.20.10.23The minecraft:render_offsets component has been deprecated in JSON formats starting with Minecraft version 1.20.10.
The loading action behavior in minecraft:shooter has been changed to match the crossbow behavior in Vanilla Minecraft. The firing behavior of a loaded minecraft:shooter with an empty inventory/off-hand has been changed so that it successfully fires loaded ammunition.
1.20.30Preview 1.20.20.20The following experimental item components were released in JSON formats 1.20.20 and higher: minecraft:hand_equipped, minecraft:use_duration and minecraft:stacked_by_data.
The minecraft:creative_category component has been discontinued in JSON formats starting with Minecraft version 1.20.20. It is now possible to set the visibility of creative groups and commands in the description field in JSON formats starting with version 1.20.20.
The item component minecraft:foil has been renamed to minecraft:glint and released from the experimental version to JSON formats starting with version 1.20.20.
1.20.30
Experiment
Holiday Creator Features
Preview 1.20.20.20The following item components have been removed: minecraft:ignores_permission, minecraft:mirrored_art and minecraft:armor in JSON format 1.20.20 and higher.
The protection field has been moved from the minecraft:armor component to the minecraft:wearable component in JSON formats 1.20.20 and higher.
Removed non-functional and redundant slot options from the minecraft:wearable component, such as mainhand, hotbar, inventory, enderchest, and equipable.
1.20.30Preview 1.20.20.21The following experimental item components were released in JSON formats 1.20.20 and higher: minecraft:use_animation, minecraft:allow_off_hand, minecraft:should_despawn, minecraft:liquid_clipped and minecraft:damage.
minecraft:entity_placer will now display an error when invalid blocks are named in the use_on and dispense_on lists.
1.20.30
Experiment
Holiday Creator Features
Preview 1.20.20.21The components minecraft:animates_in_toolbar and minecraft:explodable have been removed.
The component minecraft:shooter now supports the enchantment Quick Charge with minecraft:enchantable when charge_on_draw is true.
Added support for Efficiency enchantment for data-driven items using the minecraft:digger component.
Removed non-functional entity slot options from the minecraft:wearable component, such as sadle, entity armor, and chest.
1.20.30Preview 1.20.20.22The following experimental item components were released in JSON formats 1.20.20 and higher: minecraft:wearable and minecraft:digger
The parameter on_dig is obsolete of the item component minecraft:digger in versions 1.20.20 and later.
Preview 1.20.30.20The following experimental item component has been released in JSON format 1.20.30 and higher:minecraft:enchantable
The parameter minecraft:mining_speed is deprecated in JSON format as of version 1.20.30. Use minecraft:digger to achieve the same functionality.
1.20.30
Experiment
Holiday Creator Features
Preview 1.20.30.20Component minecraft:requires_interact removed.
1.20.30Preview 1.20.30.22The following experimental item components were released in JSON formats 1.20.30 and higher: minecraft:food and minecraft:interact_button.
minecraft:interact_button activates and sets text that is displayed when using touch controls; if it is true, it displays "Use Item".
1.20.40Preview 1.20.40.20Updated minecraft:icon, it is now possible to use unique string values again, for example "minecraft:icon": "stick".
1.20.40
Experiment
Holiday Creator Features
Preview 1.20.40.21The components minecraft:weapon, minecraft:on_use, and minecraft:on_use_on have been discontinued in version 1.20.40 and later.
1.20.50Preview 1.20.50.20The legacy item component tag:<some tag> was discontinued and the minecraft:tags item component was released, ceasing to be experimental, in JSON formats starting with version 1.20.50.
Preview 1.20.50.22The component minecraft:use_duration has been renamed to minecraft:use_modifiers and the parameter movement_modifier has been added in JSON format in versions 1.20.50 and higher.
The component minecraft:chargeable has been deprecated in JSON versions 1.20.50 and later. Use minecraft:use_modifiers instead for the behavior of movement_modifier.
Preview 1.20.50.23The on_dig event of the minecraft:digger component has been discontinued in versions 1.20.50 and higher of the format.
1.20.80
Experiment
Beta APIs
Preview 1.20.80.23Added the item component minecraft:custom_components.
1.21.20Preview 1.21.10.22The minecraft:custom_components component requires no experimentation and works in version 1.21.10+ format.
Added the minecraft:damage_absorption item component, enabling items to absorb damage intended for their wearer.
Added the minecraft:durability_sensor item component, enabling items to emit sounds and particles when damage causes them to lose durability.
Preview 1.21.20.22Using minecraft:wearable with the slot set to slot.weapon.offhand along with minecraft:allow_off_hand set to false will now cause a content error.
Preview 1.21.20.23The experimental "Holiday Creator Features" option has been removed, and the events field has also been removed and should be replaced with scripts.
1.21.30Preview 1.21.30.21Adds a content error in case an icon with the name icon_name is not found in minecraft:icon in the version 1.10 data.
Added the item component minecraft:rarity which allows you to specify the rarity of an item.
Preview 1.21.30.23Data for items with version 1.16.100 or higher can now be replaced with data for items with version 1.16.100 or higher in a higher version of the package.
Creators are allowed to replace Vanilla items based on version 1.16.100+ data with items based on version 1.16.100+ data.
1.21.30
Experiment
Bundles
Preview 1.21.30.23Added the components minecraft:storage_item and minecraft:bundle_interaction to recreate a bundle.
1.21.30Preview 1.21.30.24Added the component minecraft:dyeable to allow an item to be dyed like leather armor.
1.21.40
Experiment
Upcoming Creator Features
Preview 1.21.40.22Added support for custom items with the minecraft:block_placer item component to use the block referenced as the item icon. This applies to versions 1.21.40+ that do not have the minecraft:icon component.
Preview 1.21.40.23The added field replace_block_item to the component minecraft:block_placer requires that the item and the block have the same identifier.
1.21.40Preview 1.21.40.23The components minecraft:bundle_interaction and minecraft:bundle_interaction no longer require experimente.
1.21.50
Experiment
Upcoming Creator Features
Preview 1.21.50.20Added the boolean option canUseBlockAsIcon to the network data of the component minecraft:block_placer to fix a bug where clients were not rendering the block item correctly.
Preview 1.21.50.26Added the component minecraft:compostable to allow items to be used as compost in a composter.
1.21.60Preview 1.21.60.21Added a content warning to the minecraft:durability_sensor component in the particle_type field when an invalid value is provided.
Preview 1.21.60.23The description component menu_category now requires that the group field have a namespace.
Preview 1.21.60.24The following legacy components (prior to version 1.16.100) are now synchronized with the client:minecraft:camera,minecraft:seed,minecraft:max_damage,

minecraft:hand_equipped,minecraft:stacked_by_data,

minecraft:foil,minecraft:block,minecraft:use_duration e minecraft:max_stack_size.
Preview 1.21.60.25Two fields from the minecraft:storage_item component have been separated into distinct components:max_weight_limit has been moved to the new component minecraft:storage_weight_limit, and weight_in_storage_item has been moved to the new component minecraft:storage_weight_modifier.
The replace_block_item field from the minecraft:block_placer component no longer requires experimentation to function.
Preview 1.21.60.27The minecraft:compostable component no longer requires the experimental option to work.
1.21.80
Experiment
Custom Component V2
Preview 1.21.80.25The minecraft:custom_components component has been removed in versions 1.21.80 with the experiment enabled; custom components are now listed as vanilla components and now also support parameters that can be configured with scripts.
1.21.90Preview 1.21.90.20The component minecraft:custom_components was removed without experimentation in version 1.21.90+, functioning as a vanilla component and supporting script-defined parameters.
Preview 1.21.90.25The component minecraft:wearable has been updated and the field hides_player_location has been added, which hides the player's position in the location bar and on a locator map when using the item.
1.21.110Preview 1.21.110.20Setting the movement_modifier field of the minecraft:use_modifiers component to 1.0 now allows you to use the item while running and start running while using the item.
Preview 1.21.110.22Repairing an item using the minecraft:repairable component will no longer fail when a stack larger than strictly necessary is used as repair material.
We've added the new component minecraft:fire_resistant, which determines whether an item is immune to being burned when dropped into fire or lava, such as netherite being used as "minecraft:fire_resistant":{} Currently, items with this component visually disappear when in contact with fire or lava, but can still be picked up.
1.21.120Preview 1.21.120.20Items containing the minecraft:fire_resistant component no longer visually disappear upon contact with fire or lava.
Preview 1.21.120.22Added the new component minecraft:swing_duration, which sets the duration, in seconds, of the item's swing animation when drawing or attacking.
The field value has been added to the component minecraft:fire_resistant and is now required for it to work.
Preview 1.21.120.23The field emit_vibrations has been added to the minecraft:use_modifiers component, which controls whether an item emits vibrations when it starts or stops being used.
1.21.130Preview 1.21.130.20Added the component minecraft:swing_sounds which allows the user to override the vanilla sound and use another custom sound.
Added the component minecraft:kinetic_weapon which allows you to perform a charge attack as a spear.
Added the component minecraft:piercing_weapon which allows you to perform a jab attack like a spear.
The field type has been added to the component minecraft:cooldown which supports attack and use.
Preview 1.21.130.27The field creative_reach has been added to the item components minecraft:kinetic_weapon and minecraft:piercing_weapon to define the reach in creative mode.
The field start_sound has been added to the component minecraft:use_modifiers to define the sound when the item starts being used.
26.0Preview 26.0.23Custom Components V2 now require the format version to be 1.26.0 or higher instead of 1.21.90 or higher.
The minecraft:damage item component now supports values between 0 and 32767.
The minecraft:wearable item component now displays the armor protection value in the tooltip, just like vanilla armor.
Preview 26.0.27Custom Components V2 now require the format version 1.21.90 or higher again instead of 1.26.0 or higher.
Upcoming Bedrock Edition
26.10Preview 26.10.25The component minecraft:liquid_clipped now support minecraft:placement_filter and minecraft:block_placer components to placing on liquid blocks when used.

References

[edit | edit source]
  1. "minecraft/server.ItemCustomComponent Interface" – Microsoft Learn, December 3, 2025.
  2. "Minecraft - 1.16.100 (Bedrock)" – Minecraft Feedback, November 16, 2020.
[edit | edit source]

More information about components

[edit | edit source]
[edit | edit source]