Tags
Creators
Details
0.9.0-preview.3+26.3
Compatibility
Changes
Itematic 0.9.0 Preview 3 for 26.3
20th of October 2026
This preview is all about data components, as it adds context number providers for them and moves a bunch of item behaviour to data components!
Changes
Item Behaviour Components
- Removed
minecraft:cooldown.- Its value has been moved to the
cooldownfield inminecraft:useable. - Note that the duration is now specified in seconds rather than ticks, matching vanilla, so you will have to divide your number by 20 accordingly.
- Its value has been moved to the
So if you had this:
{
"minecraft:cooldown": {
"ticks": 20
}
}
You now have to use this instead:
{
"minecraft:useable": {
"cooldown": {
"seconds": 1.0
}
}
}
minecraft:block
- Moved all of its behaviour to the new
minecraft:block_placerdata component. - Now provides the
minecraft:block_placerdata component.
minecraft:bucket
- Moved all of its behaviour to the new
minecraft:bucketdata component. - Now provides the
minecraft:bucketdata component.
minecraft:consumable
- Made it so the
minecraft:consumabledata component this behaviour component provides determines the behaviour rather than the behaviour component itself, matching vanilla again. - However, the
has_consume_particlesandsoundfields have been moved to thehas_use_particlesandsoundfields inminecraft:useablerespectively. - Their defaults have also changed, where
has_use_particlesnow defaults tofalseandsoundis entirely optional instead of defaulting to"minecraft:entity.generic.eat". - Added the
amountfield.- Its value is a positive integer and defaults to 1.
- Is the amount of items that get consumed when finishing using an item.
- The
minecraft:consumabledata component received the same changes.
So if you had this:
{
"minecraft:consumable": {
"has_consume_particles": false,
"sound": "minecraft:item.honey_bottle.drink"
},
"minecraft:useable": {
"animation": "drink",
"remainder": {
"id": "minecraft:glass_bottle"
},
"ticks": 40
}
}
You now have to use this instead:
{
"minecraft:consumable": {},
"minecraft:useable": {
"animation": "drink",
"remainder": {
"id": "minecraft:glass_bottle"
},
"sound": "minecraft:item.honey_bottle.drink",
"ticks": 40
}
}
minecraft:enchantable
- Made it so the
minecraft:enchantabledata component this behaviour component provides determines the behaviour rather than the behaviour component itself, matching vanilla again.
minecraft:entity
- Moved all of its behaviour to the new
minecraft:entity_placerdata component. - Now provides the
minecraft:entity_placerdata component.
minecraft:equipment
- Made it so the
minecraft:equippabledata component this behaviour component provides determines the behaviour rather than the behaviour component itself, matching vanilla again.
minecraft:projectile
- Moved all of its behaviour to the new
minecraft:projectiledata component. - Now provides the
minecraft:projectiledata component.
minecraft:tool
- Made it so the
minecraft:tooldata component this behaviour component provides determines the behaviour rather than the behaviour component itself, matching vanilla again.
minecraft:useable
- Made it so all data components this behaviour component provides determine the behaviour rather than the behaviour component itself, matching vanilla.
- The
ticksfield now always has a value and defaults to{"type": "minecraft:instant"}- This means that the
minecraft:use_durationdata component is now always added and also handles instantaneous uses.
- This means that the
- Added an optional
has_use_particlesfield.- Defaults to
false. - Whether to display particles when using the item.
- When set to
true, provides theminecraft:has_use_particlesdata component.
- Defaults to
- Added an optional
soundfield.- The sound to play when using the item.
- Provides the
minecraft:use_sounddata component.
- Added an optional
cooldownfield.- The cooldown to apply when finishing using the item.
- Provides the
minecraft:use_cooldowndata component.
- Now provides the
minecraft:use_passesdata component from thepassesfield.
Example:
{
"minecraft:useable": {
"animation": "eat",
"has_use_particles": true,
"sound": "minecraft:entity.generic.eat",
"ticks": 32
}
}
minecraft:weapon
- Made it so all data components this behaviour component provides determine the behaviour rather than the behaviour component itself, matching vanilla.
minecraft:zoom
- Made it so all data components this behaviour component provides determine the behaviour rather than the behaviour component itself, matching vanilla.
- Now provides the
minecraft:zoom_field_of_view_multiplierandminecraft:zoom_soundsdata components.
Data Components
- Added the following data components:
minecraft:block_placerminecraft:bucketminecraft:dispense_behaviorminecraft:entity_placerminecraft:has_use_particlesminecraft:item_holder_soundsminecraft:projectileminecraft:use_soundminecraft:zoom_field_of_view_multiplierminecraft:zoom_sounds
minecraft:block_placer
- Places a block in the world when used in specific conditions.
- Format: A map with fields:
block: A block picker. The actual block to place.operator_only: An optional boolean. Defaults tofalse. Determines whether only operators can place this block.passes: An optional set of block passes. Defaults to["block"]. Determines where its user can place the entity on.block: Allows this block to be placed on a block.fluid: Allows this block to be placed on a fluid.
Example:
{
"block": "minecraft:cobblestone"
}
minecraft:bucket
- Places a bucket's contents in the world.
- Format: A map with fields:
entity: An optional entity spawner. The entity to place.modification: A world modification. Modifies the world in a specific way.
Example:
{
"entity": {
"entity": "minecraft:pufferfish"
},
"modification": {
"type": "minecraft:place_fluid",
"fluid": "minecraft:water",
"place_sound": "minecraft:item.bucket.empty_fish",
"transforms_into": "minecraft:bucket"
}
}
minecraft:consumable
-
Removed the
has_consume_particlesfield.- This has been replaced by the
minecraft:has_use_particlesdata component.
- This has been replaced by the
-
Removed the
soundfield. -
This has been replaced by the
minecraft:use_sounddata component.
So if you had this:
{
"minecraft:consumable": {}
}
minecraft:dispense_behavior
- Determines how the item stack behaves when dispensed from a Dispenser.
- Format: A dispense behaviour.
- When absent, dispenses the item itself.
Example:
{
"minecraft:dispense_behavior": "minecraft:shoot_projectile"
}
minecraft:enchantable
- Now works without needing the
minecraft:equipmentitem behaviour, matching vanilla again. - Added an optional
transforms_intofield.- Its value is an item.
- Is the item to transform into when enchanted.
Example:
{
"value": 1,
"transforms_into": "minecraft:enchanted_book"
}
You now have to use this instead:
{
"minecraft:consumable": {},
"minecraft:has_use_particles": {},
"minecraft:use_sound": "minecraft:entity.generic.eat"
}
- Added the
amountfield.- Its value is a positive integer and defaults to 1.
- Is the amount of items that get consumed when finishing using an item.
Examples:
{
"minecraft:consumable": {}
}
{
"minecraft:consumable": {
"amount": 2
}
}
minecraft:entity_placer
- Places an entity in the world when used in specific conditions.
- Format: A map with fields:
entity: An entity spawner. The actual entity to place.uses_collision_shape: An optional block, list of blocks or hash-prefixed block tag. Determines the blocks that use the block's collision shape instead of the interaction shape for the entity's placement.allow_spawner_modification: An optional boolean. Defaults tofalse. Determines whether this entity placer is allowed to modify Spawners.passes: An optional set of entity passes. Defaults to["block"]. Determines where its user can place the entity on.block: Allows this entity to be placed on a block.fluid: Allows this entity to be placed on a fluid.
Example:
{
"allow_spawner_modification": true,
"entity": {
"allow_item_data": true,
"entity": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
minecraft:equippable
- Now works without needing the
minecraft:equipmentitem behaviour, matching vanilla again.
minecraft:has_use_particles
- When specified, displays particles when using the item.
- Its value is always
{}.
minecraft:item_holder_sounds
- The sounds an item holder plays when interacting with it.
- Format: A map with fields:
insert_item: A sound event or inline sound event. The sound to play when inserting an item stack in the item holder.insert_item_fail: A sound event or inline sound event. The sound to play when inserting an item stack in the item holder fails.remove_item: A sound event or inline sound event. The sound to play when removing an item stack from the item holder.empty: A sound event or inline sound event. The sound to play when using the item holder to drop the item stacks inside.
- When absent, does not play any sounds when the item stack is interacted with.
Example:
{
"minecraft:item_holder_sounds": {
"empty": "minecraft:item.bundle.drop_contents",
"insert_item": "minecraft:item.bundle.insert",
"insert_item_fail": "minecraft:item.bundle.insert_fail",
"remove_item": "minecraft:item.bundle.remove_one"
}
}
minecraft:kinetic_weapon
- Now works without needing the
minecraft:weaponitem behaviour, matching vanilla again.
minecraft:piercing_weapon
- Now works without needing the
minecraft:weaponitem behaviour, matching vanilla again.
minecraft:projectile
- Spawns an entity when used as a projectile, such as when throwing it or shooting it with a shooter.
- Format: An entity spawner.
Example:
{
"components": {
"minecraft:chicken/variant": "minecraft:temperate"
},
"entity": "minecraft:egg"
}
minecraft:smashing_weapon
- Now works without needing the
minecraft:weaponitem behaviour. - This matches vanilla's
minecraft:weapon,minecraft:piercing_weaponandminecraft:kinetic_weapondata components.
minecraft:tool
- Now works without needing the
minecraft:toolitem behaviour, matching vanilla again.
minecraft:use_sound
- Plays a sound when using the item.
- Its value is a sound event or inline sound event.
Example:
{
"minecraft:use_sound": "minecraft:entity.generic.eat"
}
minecraft:weapon
- Now works without needing the
minecraft:weaponitem behaviour, matching vanilla again.
minecraft:zoom_field_of_view_multiplier
- Determines how much the user zooms in when the item is being used.
- Format: A positive float that is at most 1.0.
minecraft:zoom_sounds
- Plays sounds when zooming in and out.
- Format: A map with fields:
start: A sound event or inline sound event. The sound to play when zooming in.stop: A sound event or inline sound event. The sound to play when zooming out.
Example:
{
"start": "minecraft:item.spyglass.use",
"stop": "minecraft:item.spyglass.stop_using"
}
Use Duration Providers
- Added the
minecraft:instanttype.
minecraft:instant
- Uses the item instantaneously.
- Has no additional fields.
Example:
{
"type": "minecraft:instant"
}
Context Int Providers
- Added the
minecraft:data_componentcontext int provider type.
minecraft:data_component
- Gets an integer from a data component.
- Format: A map with fields:
component: A data component context int provider type. The data component to retrieve an integer from. Not all data components provide integers. See the Data Component Context Int Providers section below for more information.source: An item stack target, entity target or block entity target. The data component source.fallback: An optional context int provider. The fallback context int provider to use when the component fails to calculate an integer. If not specified, the entire context int provider will fail.- Component-specific fields determined by
component.
- If the data component source or data component is not present, the int provider will fail to calculate an integer.
- The individual data component integer providers may also fail based on other conditions, such as when another expected data component is not present or when an index is mismatched.
- To convert between types, you can use
minecraft:from_floatandminecraft:from_int.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:ominous_bottle_amplifier",
"source": "tool"
}
Context Float Providers
- Added the
minecraft:data_componentcontext float provider type.
minecraft:data_component
- Gets a float from a data component.
- Format: A map with fields:
component: A data component context float provider type. The data component to retrieve a float from. Not all data components provide floats. See the Data Component Context Float Providers section below for more information.source: An item stack target, entity target or block entity target. The data component source.fallback: An optional context float provider. The fallback context float provider to use when the component fails to calculate a float. If not specified, the entire context float provider will fail.- Component-specific fields determined by
component.
- If the data component source or data component is not present, the float provider will fail to calculate a float.
- The individual data component float providers may also fail based on other conditions, such as when another expected data component is not present or when an index is mismatched.
- To convert between types, you can use
minecraft:from_floatandminecraft:from_int.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:food",
"provider": "saturation",
"source": "tool"
}
Data Component Context Int Providers
- Provide an integer from a specific data component.
minecraft:custom_data
- Provides an integer from the
minecraft:custom_datadata component. - Fields:
path: An NBT path. The path to retrieve the integer from.
- Fails to provide an integer when no NBT elements matched, multiple NBT elements matched or when the found NBT element is not a number.
- Numbers of different types are automatically converted to ints.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:custom_data",
"path": "example_map.integer_value",
"source": "tool"
}
minecraft:damage
- Provides an integer from the
minecraft:damagedata component using a specific sub-provider. - Fields:
provider: A damage sub-provider.- Damage sub-provider-specific fields.
damage
- Provides the damage as-is.
- Has no additional fields.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:damage",
"provider": "damage",
"source": "tool"
}
durability
- Calculates the durability using the
minecraft:max_damagedata component. - Has no additional fields.
- Fails when the
minecraft:max_damagedata component is not present.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:damage",
"provider": "durability",
"source": "tool"
}
minecraft:enchantments
- Provides an integer from the
minecraft:enchantmentsdata component. - Fields:
enchantment: An enchantment. The enchantment to get the level from.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:enchantments",
"enchantment": "minecraft:sharpness",
"source": "tool"
}
minecraft:food
- Provides an integer from the
minecraft:fooddata component using a specific sub-provider. - Fields:
provider: A food sub-provider.- Food sub-provider-specific fields.
nutrition
- Provides the nutrition from the food data component.
- Has no additional fields.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:food",
"provider": "nutrition",
"source": "tool"
}
minecraft:max_damage
- Provides the value from the
minecraft:max_damagedata component. - Has no additional fields.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:max_damage",
"source": "tool"
}
minecraft:max_stack_size
- Provides the value from the
minecraft:max_stack_sizedata component. - Has no additional fields.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:max_stack_size",
"source": "tool"
}
minecraft:ominous_bottle_amplifier
- Provides the value from the
minecraft:ominous_bottle_amplifierdata component. - Has no additional fields.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:ominous_bottle_amplifier",
"source": "tool"
}
minecraft:stored_enchantments
- Provides an integer from the
minecraft:stored_enchantmentsdata component. - Fields:
enchantment: An enchantment. The enchantment to get the level from.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:stored_enchantments",
"enchantment": "minecraft:sharpness",
"source": "tool"
}
Data Component Context Float Providers
- Provide a float from a specific data component.
minecraft:custom_data
- Provides a float from the
minecraft:custom_datadata component. - Fields:
path: An NBT path. The path to retrieve the float from.
- Fails to provide a float when no NBT elements matched, multiple NBT elements matched or when the found NBT element is not a number.
- Numbers of different types are automatically converted to floats.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:custom_data",
"path": "example_map.float_value",
"source": "tool"
}
minecraft:custom_model_data
- Provides a float from the
minecraft:custom_model_datadata component. - Fields:
index: A non-negative integer. The index to retrieve the custom model data's stored float from.
- Fails to provide a float when no float is present at the specified index.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:custom_model_data",
"index": 0,
"source": "tool"
}
minecraft:damage
- Provides a float from the
minecraft:damagedata component using a specific sub-provider. - Fields:
provider: A damage sub-provider.- Damage sub-provider-specific fields.
damage_percentage
- Calculates the damage percentage using the
minecraft:max_damagedata component, resulting in a value between 0.0 and 1.0 inclusive. - Has no additional fields.
- Fails when the
minecraft:max_damagedata component is not present.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:damage",
"provider": "damage_percentage",
"source": "tool"
}
minecraft:food
- Provides a float from the
minecraft:fooddata component using a specific sub-provider. - Fields:
provider: A food sub-provider.- Food sub-provider-specific fields.
saturation
- Provides the saturation from the food data component.
- Has no additional fields.
Example:
{
"type": "minecraft:data_component",
"component": "minecraft:food",
"provider": "saturation",
"source": "tool"
}
Fixes
- Entity placer items that use multiple passes, such as Spawn Eggs, now no longer place multiple entities.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:ZclAAHfk:2NOkssYn"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:ZclAAHfk:2NOkssYn"
}

