promotional bannermobile promotional banner

Itematic (ErrorCraft)

A mod that adds data-driven items to the game, and much more!
Back to Files

Itematic 0.9.0 Preview 3 for 26.3

File nameItematic-0.9.0-preview.3+26.3.jar
Uploader
ErrorCraftErrorCraft
Uploaded
Oct 20, 2026
Downloads
5
Size
2.4 MB
Mod Loaders
Fabric
File ID
9270534
Type
B
Beta
Supported game versions
  • 26.3

Curse Maven Snippet

Fabric

modImplementation "curse.maven:itematic-errorcraft-1756509:9270534"

Learn more about Curse Maven

What's new

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! On top of that, the mod is now also available on CurseForge! Right on time for the mod's first anniversary...

Changes

Item Behaviour Components

  • Removed minecraft:cooldown.
    • Its value has been moved to the cooldown field in minecraft: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.

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_placer data component.
  • Now provides the minecraft:block_placer data component.

minecraft:bucket

  • Moved all of its behaviour to the new minecraft:bucket data component.
  • Now provides the minecraft:bucket data component.

minecraft:consumable

  • Made it so the minecraft:consumable data component this behaviour component provides determines the behaviour rather than the behaviour component itself, matching vanilla again.
  • However, the has_consume_particles and sound fields have been moved to the has_use_particles and sound fields in minecraft:useable respectively.
  • Their defaults have also changed, where has_use_particles now defaults to false and sound is entirely optional instead of defaulting to "minecraft:entity.generic.eat".
  • Added the amount field.
    • 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:consumable data 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:enchantable data 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_placer data component.
  • Now provides the minecraft:entity_placer data component.

minecraft:equipment

  • Made it so the minecraft:equippable data 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:projectile data component.
  • Now provides the minecraft:projectile data component.

minecraft:tool

  • Made it so the minecraft:tool data 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 ticks field now always has a value and defaults to {"type": "minecraft:instant"}
    • This means that the minecraft:use_duration data component is now always added and also handles instantaneous uses.
  • Added an optional has_use_particles field.
    • Defaults to false.
    • Whether to display particles when using the item.
    • When set to true, provides the minecraft:has_use_particles data component.
  • Added an optional sound field.
    • The sound to play when using the item.
    • Provides the minecraft:use_sound data component.
  • Added an optional cooldown field.
    • The cooldown to apply when finishing using the item.
    • Provides the minecraft:use_cooldown data component.
  • Now provides the minecraft:use_passes data component from the passes field.

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_multiplier and minecraft:zoom_sounds data components.

Data Components

  • Added the following data components:
    • minecraft:block_placer
    • minecraft:bucket
    • minecraft:dispense_behavior
    • minecraft:entity_placer
    • minecraft:has_use_particles
    • minecraft:item_holder_sounds
    • minecraft:projectile
    • minecraft:use_sound
    • minecraft:zoom_field_of_view_multiplier
    • minecraft: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 to false. 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_particles field.

    • This has been replaced by the minecraft:has_use_particles data component.
  • Removed the sound field.

  • This has been replaced by the minecraft:use_sound data 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:equipment item behaviour, matching vanilla again.
  • Added an optional transforms_into field.
    • 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 amount field.
    • 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 to false. 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:equipment item 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:weapon item behaviour, matching vanilla again.

minecraft:piercing_weapon

  • Now works without needing the minecraft:weapon item 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:weapon item behaviour.
  • This matches vanilla's minecraft:weapon, minecraft:piercing_weapon and minecraft:kinetic_weapon data components.

minecraft:tool

  • Now works without needing the minecraft:tool item 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:weapon item 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:instant type.

minecraft:instant

  • Uses the item instantaneously.
  • Has no additional fields.

Example:

{
  "type": "minecraft:instant"
}

Context Int Providers

  • Added the minecraft:data_component context 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_float and minecraft:from_int.

Example:

{
  "type": "minecraft:data_component",
  "component": "minecraft:ominous_bottle_amplifier",
  "source": "tool"
}

Context Float Providers

  • Added the minecraft:data_component context 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_float and minecraft: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_data data 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:damage data 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_damage data component.
  • Has no additional fields.
  • Fails when the minecraft:max_damage data component is not present.

Example:

{
  "type": "minecraft:data_component",
  "component": "minecraft:damage",
  "provider": "durability",
  "source": "tool"
}

minecraft:enchantments

  • Provides an integer from the minecraft:enchantments data 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:food data 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_damage data 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_size data 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_amplifier data 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_enchantments data 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_data data 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_data data 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:damage data 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_damage data component, resulting in a value between 0.0 and 1.0 inclusive.
  • Has no additional fields.
  • Fails when the minecraft:max_damage data 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:food data 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.

This mod has no additional files