Item components
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
trueorfalseif it istruethe block and the item must have the sameidentifierand theminecraft:iconfield can be omitted merging the two into one thing.
- Defines whether the item will replace the block, it can be
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.
- 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:
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_attackandmagma) that can be absorbed by the item.
- List of damage deals (such as
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 thetagsentry 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.
- List of blocks to break, with correlated extraction speeds.
use_efficiency:- Defines whether the item should be affected if the efficiency enchantment is applied to it. Can be
trueorfalse.
- Defines whether the item should be affected if the efficiency enchantment is applied to it. Can be
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
minandmaxfields that define the probability of the item losing durability working in conjunction with the Unbreaking enchantment must be a value from 0 to 100.
- An object that has
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:
none: Disables enchantments on the item.all: Allows all possible types of enchantments.sword: Allows swords enchantments.spear: Allows enchantments of tridents.melee_spear: Allows enchantments of spears.bow: Allows bows enchantments.crossbow: Allows enchantments of crossbows.g_armor: Allows generic enchantments of armor or any part.cosmetic_head: Allows cosmetic helmet enchantments like carved pumpkin.armor_head: Allows enchantments of helmets.armor_torso: Allows enchantments of chestplates.armor_legs: Allows leggings enchantments.armor_feet: Allows enchantments of boots.shield: Allows shield enchantments.elytra: Allows elytra enchantments.g_tool: Allows generic tool enchantments.g_digging: Allows tool enchantments that break blocks.pickaxe: Allows enchantments of pickaxes.shovel: Allows shovels enchantments.axe: Allows enchantments of axes.hoe: Allows enchantments of hoes.shears: Allows shears enchantments.flintsteel: Allows enchantments of flint and steel.fishing_rod: Allows fishing rod enchantments.carrot_stick: Allows carrot on a stick enchantments.
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
trueorfalseto define whether or not the item resists fire and lava.
- It can be
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
trueyou can always eat this item (even when you are not hungry).
- If
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
107374180as it is the maximum 32-bit value.
- 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
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.
- A 32-bit integer value that defines the saturation modification value that uses the calculation (
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.05and maximum value being107374180being the 32-bit limit value.
- How long, in seconds, this fuel will smelt items in a furnace, minimum value being
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 theitem_texture.jsonfile.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:wearablecomponent.
- The icon overlay for when your item has a trim, by default it uses the icon corresponding to the slot defined in the
<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:- The texture displayed behind the item preview with the
minecraft:bundle_interactioncomponent used in the bundle.
- The texture displayed behind the item preview with the
bundle_open_front:- The texture displayed in front of the item preview with the
minecraft:bundle_interactioncomponent used in the bundle.
- The texture displayed in front of the item preview with the
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
delayhas elapsed.
- Time, in ticks, during which the effect can be applied after the
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.
- The entity to fire as a projectile. If no namespace is specified, it is assumed to be
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-15work.
- Redstone signal intensity for use in comparator blocks can be any value including negative values, but only values from
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.randomandcontext.otherto get the second slot.
- How much durability is repaired, can be an integer value or a Molang expression, being able to use
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:- Indicates the item identifier. The item must have the component
minecraft:projectile.
- Indicates the item identifier. The item must have the component
use_offhand:- Can be
trueorfalse, allows the ammunition to be used in the offhand.
- Can be
search_inventory:use_in_creative:- Can be
trueorfalse, allows the ammo to be used in creative.
- Can be
charge_on_draw:- Can be
trueorfalse, defines whether the item is carried when drawn, if the item usesminecraft:use_modifiersit must haveuse_durationgreater than or equal tomax_draw_duration.
- Can be
max_draw_duration:- Determines how long the weapon can be drawn before it is automatically released.
scale_power_by_draw_duration:- It can be
trueorfalse, whentruethe longer the weapon is drawn, the more power it will have when released.
- It can be
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
trueorfalse.
- Determines whether other storage items can be placed in the container can be
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
trueorfalse.
- Whether the item should use the arm swing animation when thrown can be either
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
trueorfalse, if it istrueit will take the time into consideration, that is, the longer you hold it, the more power it will have when thrown.
- Whether or not the power of the throw increases with the duration of the charge. It can be
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,spearandspyglass.
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
trueorfalse.
- Controls whether an item vibrates when it starts or stops being used; can be
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.legsandslot.armor.feeti.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]
- Defines the slot in which the item can be used, which can be
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
trueorfalse.
- Determines whether or not to hide the player's location on locator maps and in the locator bar when used. Can be either
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]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]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]| Bedrock Edition | |||||||
|---|---|---|---|---|---|---|---|
| ? | Item components were added. | ||||||
| 1.19.60 Experiment | Preview 1.19.60.23 | Expanded 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 | Preview 1.20.0.20 | Items 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.21 | Custom 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.22 | The 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.23 | Items 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.0 | Preview 1.20.0.23 | The 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.10 | Preview 1.20.10.20 | The following experimental item components have been released in JSON formats 1.20.10 and higher: minecraft:cooldown and minecraft:repairable. | |||||
| 1.20.10 Experiment | Preview 1.20.10.20 | Items 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.10 | Preview 1.20.10.21 | Items 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.23 | The 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 | Preview 1.20.10.23 | The 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.30 | Preview 1.20.20.20 | The 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 | Preview 1.20.20.20 | The 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.30 | Preview 1.20.20.21 | The 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 | Preview 1.20.20.21 | The 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.30 | Preview 1.20.20.22 | The 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.20 | The 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 | Preview 1.20.30.20 | Component minecraft:requires_interact removed. | |||||
| 1.20.30 | Preview 1.20.30.22 | The 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.40 | Preview 1.20.40.20 | Updated minecraft:icon, it is now possible to use unique string values again, for example "minecraft:icon": "stick". | |||||
| 1.20.40 Experiment | Preview 1.20.40.21 | The components minecraft:weapon, minecraft:on_use, and minecraft:on_use_on have been discontinued in version 1.20.40 and later. | |||||
| 1.20.50 | Preview 1.20.50.20 | The 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.22 | The 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.23 | The 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 | Preview 1.20.80.23 | Added the item component minecraft:custom_components. | |||||
| 1.21.20 | Preview 1.21.10.22 | The 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.22 | Using 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.23 | The experimental "Holiday Creator Features" option has been removed, and the events field has also been removed and should be replaced with scripts. | ||||||
| 1.21.30 | Preview 1.21.30.21 | Adds 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.23 | Data 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 | Preview 1.21.30.23 | Added the components minecraft:storage_item and minecraft:bundle_interaction to recreate a bundle. | |||||
| 1.21.30 | Preview 1.21.30.24 | Added the component minecraft:dyeable to allow an item to be dyed like leather armor. | |||||
| 1.21.40 Experiment | Preview 1.21.40.22 | Added 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.23 | The added field replace_block_item to the component minecraft:block_placer requires that the item and the block have the same identifier. | ||||||
| 1.21.40 | Preview 1.21.40.23 | The components minecraft:bundle_interaction and minecraft:bundle_interaction no longer require experimente. | |||||
| 1.21.50 Experiment | Preview 1.21.50.20 | Added 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.26 | Added the component minecraft:compostable to allow items to be used as compost in a composter. | ||||||
| 1.21.60 | Preview 1.21.60.21 | Added a content warning to the minecraft:durability_sensor component in the particle_type field when an invalid value is provided. | |||||
| Preview 1.21.60.23 | The description component menu_category now requires that the group field have a namespace. | ||||||
| Preview 1.21.60.24 | The following legacy components (prior to version 1.16.100) are now synchronized with the client:minecraft:camera,minecraft:seed,minecraft:max_damage,
minecraft:foil,minecraft:block,minecraft:use_duration e minecraft:max_stack_size. | ||||||
| Preview 1.21.60.25 | Two 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.27 | The minecraft:compostable component no longer requires the experimental option to work. | ||||||
| 1.21.80 Experiment | Preview 1.21.80.25 | The 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.90 | Preview 1.21.90.20 | The 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.25 | The 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.110 | Preview 1.21.110.20 | Setting 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.22 | Repairing 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.120 | Preview 1.21.120.20 | Items containing the minecraft:fire_resistant component no longer visually disappear upon contact with fire or lava. | |||||
| Preview 1.21.120.22 | Added 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.23 | The 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.130 | Preview 1.21.130.20 | Added 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.27 | The 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.0 | Preview 26.0.23 | Custom 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.27 | Custom Components V2 now require the format version 1.21.90 or higher again instead of 1.26.0 or higher. | ||||||
| Upcoming Bedrock Edition | |||||||
| 26.10 | Preview 26.10.25 | The 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]- ↑ "minecraft/server.ItemCustomComponent Interface" – Microsoft Learn, December 3, 2025.
- ↑ "Minecraft - 1.16.100 (Bedrock)" – Minecraft Feedback, November 16, 2020.
External links
[edit | edit source]More information about components
[edit | edit source]Navigation
[edit | edit source]| Editions |
| ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Development |
| ||||||||
| Technical |
| ||||||||
| Multiplayer | |||||||||
| Exclusive features |
| ||||||||
| Removed | |||||||||