ItematicСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (43)
beta
Itematic 0.9.0 Preview 3 for 26.3
0.9.0-preview.3+26.320 окт. 2026 г.48Minecraft: 26.3fabric
Что нового
## 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 `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:
```json
{
"minecraft:cooldown": {
"ticks": 20
}
}
```
You now have to use this instead:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"value": 1,
"transforms_into": "minecraft:enchanted_book"
}
```
You now have to use this instead:
```json
{
"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:
```json
{
"minecraft:consumable": {}
}
```
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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:
```json
{
"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.
beta
Itematic 0.9.0 Preview 2 for 26.3
0.9.0-preview.2+26.313 окт. 2026 г.66Minecraft: 26.3fabric
Что нового
## Itematic 0.9.0 Preview 2 for 26.3
### 13th of October 2026
This preview adds a new data-driven registry for item groups!
<br />

# Changes
- Added data-driven item groups under the `item_group` directory in a data pack.
## Item Groups
- A new registry for providing items for the Creative inventory.
- Format: A map with fields:
- `name`: A text component. The name displayed when hovering over the group, as well as a title in all but the Survival Inventory group.
- `icon`: An item stack. The icon to display for the group.
- `entries`: An item group entry provider, list of item group entry providers, or hash-prefixed item group entry provider tag. The items to display in the group.
Example:
```json
{
"entries": "#minecraft:building_blocks",
"icon": {
"id": "minecraft:bricks"
},
"name": {
"translate": "itemGroup.buildingBlocks"
}
}
```
- You can add your own item groups to the `#minecraft:creative_mode_groups` tag to display them in the Creative inventory.
- Any additional groups will be displayed on a separate page, and only ten groups from the tag will be displayed at once.
- If no item stacks are available in an item group, it won't display the group and later groups will be moved earlier in the list.
- The following groups are always in the same place:
- Operator Utilities (`minecraft:op_blocks`)
- Search Items (`minecraft:search`)
- Saved Hotbars (`minecraft:hotbar`)
- Survival Inventory (`minecraft:inventory`)
- If any of these are removed with a data pack filter, they will no longer display in the Creative inventory.
beta
Itematic 0.9.0 Preview 1 for 26.3
0.9.0-preview.1+26.34 окт. 2026 г.57Minecraft: 26.3fabric
Что нового
The first preview that is actually up-to-date with the game...
This preview adds a new registry for entity spawn rules, expands various item behaviour with a new data component and comes with a few new block state provider types!
# Changes
- Removed brewing recipes.
- This has been replaced by a new system in vanilla.
- The brewing recipe book has been removed alongside it due to excessive duplication of recipes in the recipe book otherwise.
- Added the `entity_spawn_rule_set` registry.
- Entity spawners must refer to an element in this registry.
- See the Entity Spawn Rule Sets section for more information.
## Items
- Added an optional `interact_animation` field.
- Its default value is `{"type": "whack", "duration": 6}`.
- Provides the `minecraft:interact_animation` data component.
Example:
```json
{
"behavior": {
"minecraft:cooking_fuel": {
"burn_time": "minecraft:cooking/time_dry_plants",
"speed_multiplier": "minecraft:cooking/speed_default"
},
"minecraft:stackable": 64
},
"display": {
"model": "minecraft:stick",
"translation_key": "item.minecraft.stick"
},
"interact_animation": {
"type": "whack",
"duration": 6
}
}
```
## Item Behaviour Components
- Renamed `minecraft:fuel` to `minecraft:cooking_fuel` and expanded it.
- Added `minecraft:brewing_fuel`.
- Expanded the following item behaviour components:
- `minecraft:bucket`
- `minecraft:compostable`
- `minecraft:entity`
- `minecraft:equipment`
- `minecraft:projectile`
- `minecraft:weapon`
### `minecraft:bucket`
- The `entity.spawn_rules` field must now point to an entity spawn rule set.
- See the `minecraft:entity` item behaviour changes for more information.
### `minecraft:brewing_fuel`
- Allows this item to be used as fuel for a Brewing Stand.
- Format:
- `uses`: A fixed integer or a context int provider. The amount of times this fuel will brew potions.
- `speed_multiplier`: A fixed float or a context float provider. How fast the Brewing Stand will brew the potions.
- Provides the `minecraft:brewing_fuel` data component.
### `minecraft:compostable`
- Renamed the `level_increase_chance` field to `layers` and made its value a fixed integer or a context int provider.
- Provides the `minecraft:compostable` data component.
So if you had this:
```json
{
"minecraft:compostable": {
"level_increase_chance": 0.65
}
}
```
You now have to use this instead:
```json
{
"minecraft:compostable": {
"layers": "minecraft:compostable/medium"
}
}
```
If you used the same values as vanilla before, you can use this table to find the new values for the new field.
| `level_increase_chance` | `layers` |
|-------------------------|------------------------------------------|
| `0.3` | `"minecraft:compostable/low"` |
| `0.5` | `"minecraft:compostable/low_medium"` |
| `0.65` | `"minecraft:compostable/medium"` |
| `0.85` | `"minecraft:compostable/medium_high"` |
| `1.0` | `"minecraft:compostable/always_add_one"` |
### `minecraft:cooking_fuel`
- Renamed the `ticks` field to `burn_time` and made its value a fixed integer or a context int provider.
- Added the `speed_multiplier` field.
- Its value is a fixed float or a context float provider.
- Provides the `minecraft:cooking_fuel` and `minecraft:cooking_fuel_remainder` data components.
So if you had this:
```json
{
"minecraft:fuel": {
"remainder": {
"id": "minecraft:bucket"
},
"ticks": 20000
}
}
```
You now have to use this instead:
```json
{
"minecraft:cooking_fuel": {
"burn_time": "minecraft:cooking/time_lava_bucket",
"remainder": {
"id": "minecraft:bucket"
},
"speed_multiplier": "minecraft:cooking/speed_default"
}
}
```
If you used the same values as vanilla before, you can use this table to find the new values for the new field depending on the context of the item, as well as `"minecraft:cooking/speed_default"` for the `speed_multiplier` field.
| `ticks` | `burn_time` |
|---------|-----------------------------------------------------------------------------------------------------------------------------|
| `50` | `"minecraft:cooking/time_wool_slabs"` or `"minecraft:cooking/time_bamboo"` |
| `67` | `"minecraft:cooking/time_wool_carpets"` |
| `100` | `"minecraft:cooking/time_wool"`, `"minecraft:cooking/time_dry_plants"` or `"minecraft:cooking/time_wood_items_extra_small"` |
| `150` | `"minecraft:cooking/time_wood_slabs"` |
| `200` | `"minecraft:cooking/time_wood_items_large"` |
| `300` | `"minecraft:cooking/time_wood_blocks"`, `"minecraft:cooking/time_roots"` or `"minecraft:cooking/time_wood_items_small"` |
| `800` | `"minecraft:cooking/time_hanging_signs"` |
| `1200` | `"minecraft:cooking/time_boats"` |
| `1600` | `"minecraft:cooking/time_coal"` |
| `2400` | `"minecraft:cooking/time_blaze_rod"` |
| `4001` | `"minecraft:cooking/time_dried_kelp_block"` |
| `16000` | `"minecraft:cooking/time_coal_block"` |
| `20000` | `"minecraft:cooking/time_lava_bucket"` |
### `minecraft:entity`
- Added optional field `uses_collision_shape`.
- Its value is a 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.
Example:
```json
{
"minecraft:entity": {
"entity": {
"allow_item_data": true,
"components": {
"minecraft:cushion/color": "white"
},
"entity": "minecraft:cushion",
"spawn_rules": "minecraft:cushion"
},
"uses_collision_shape": "#minecraft:cushion_uses_collision_shape"
}
}
```
- The `entity.spawn_rules` field must now point to an entity spawn rule set.
So if you had this:
```json
{
"minecraft:entity": {
"entity": {
"allow_item_data": true,
"entity": "minecraft:painting",
"spawn_rules": [
{
"type": "minecraft:discard",
"condition": {
"type": "minecraft:side_check",
"sides": [
"down",
"up"
]
}
}
]
}
}
}
```
You now have to use this instead:
```json
{
"minecraft:entity": {
"entity": {
"allow_item_data": true,
"entity": "minecraft:painting",
"spawn_rules": "minecraft:painting"
}
}
}
```
With the following entity spawn rule set named `minecraft:painting`:
```json
[
{
"type": "minecraft:discard",
"condition": {
"type": "minecraft:side_check",
"sides": [
"down",
"up"
]
}
}
]
```
### `minecraft:equipment`
- Added optional field `mob_visibility`.
- Its value is the same as the `minecraft:mob_visibility` data component.
- Provides the `minecraft:mob_visibility` data component.
### `minecraft:projectile`
- The `entity.spawn_rules` field must now point to an entity spawn rule set.
- See the `minecraft:entity` item behaviour changes for more information.
### `minecraft:weapon`
- Renamed the `swing_animation` field to `attack_animation`.
- This now also provides the `minecraft:attack_animation` data component instead.
## Data Components
- Added `minecraft:cooking_fuel_remainder`.
### `minecraft:cooking_fuel_remainder`
- Represents the item to leave behind when this item is used as cooking fuel.
- Format: An item stack.
Example:
```json
{
"id": "minecraft:bucket"
}
```
## Item Group Entry Providers
- Expanded `minecraft:painting_variant`.
### `minecraft:painting_variant`
- The `painting_variants.id` field now accepts a painting variant, list of painting variants or hash-prefixed painting variant tag.
- This means that existing providers must now be prefixed with a hash.
So if you had this:
```json
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"painting_variants": {
"id": "minecraft:placeable",
"expected": true
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"painting_variants": {
"id": "#minecraft:placeable",
"expected": true
}
}
```
## Entity Spawn Rule Sets
- A new registry containing collections of entity spawn rules so they can be reused across different contexts.
- Format: A list of entity spawn rules.
Example:
```json
[
{
"type": "minecraft:discard",
"condition": {
"type": "minecraft:side_check",
"sides": [
"down"
]
}
},
{
"type": "minecraft:fits_in_volume",
"blocks": true,
"entities": true
},
{
"type": "minecraft:align_yaw",
"face_away_from_player": true,
"steps": 8
}
]
```
## Entity Spawn Rules
- Added the following entity spawn rules:
- `minecraft:offset_spawn_position_to_exact_y`
- `minecraft:rests_on_top_of_face`
- Expanded the following entity spawn rules:
- `minecraft:align_yaw`
- `minecraft:fits_in_volume`
### `minecraft:align_yaw`
- Added an optional `face_away_from_player` field.
- Its value is a boolean and defaults to `false`.
- This default behaviour is inverted from its previous form, so if you used `minecraft:align_yaw` before you must set `face_away_from_player` to `true`.
So if you had this:
```json
{
"type": "minecraft:align_yaw",
"steps": 8
}
```
You now have to use this instead:
```json
{
"type": "minecraft:align_yaw",
"face_away_from_player": true,
"steps": 8
}
```
### `minecraft:fits_in_volume`
- Made the default values of the `blocks` and `entities` fields `false` instead of `true`.
So if you had this:
```json
{
"type": "minecraft:fits_in_volume"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:fits_in_volume",
"blocks": true,
"entities": true
}
```
- The `entities` field now has an additional option that can check for a specific set of entities.
- `false`: Do not check for entities.
- `true`: Check for any entity type.
- An entity type, list of entity types or hash-prefixed entity type tag: Check for the specified entity types.
Example:
```json
{
"type": "minecraft:fits_in_volume",
"entities": "#minecraft:cannot_intersect_with_cushion"
}
```
### `minecraft:offset_spawn_position_to_exact_y`
- Spawns the entity on the exact interacted y level.
- This may be the same in some contexts, in which case the position will not be modified.
- Has no additional fields.
### `minecraft:rests_on_top_of_face`
- Checks whether the specified hitbox rests on a top face of a block.
- The hitbox to check for is centred around the entity spawner's current spawn position.
- Fields:
- `volume`: An optional list of three doubles. The volume to use instead of the entity's hitbox.
## Block State Providers
- Added the following block state providers:
- `minecraft:apply_properties`
- `minecraft:map_block`
### `minecraft:apply_properties`
- Sets the block state properties on the current block state without modifying the block itself.
- If the property or property value is not valid for the block, it will not set the defined property value.
- Format:
- `properties`: A map of block state properties to block state property values.
Example:
```json
{
"type": "minecraft:apply_properties",
"properties": {
"eye": "true"
}
}
```
### `minecraft:map_block`
- Maps a block to another block, keeping the properties present on both blocks intact.
- If the block is not defined as a key in the map, no changes are made.
- Format:
- `blocks`: A map of blocks to blocks.
Example:
```json
{
"type": "minecraft:map_block",
"blocks": {
"minecraft:acacia_log": "minecraft:stripped_acacia_log",
"minecraft:acacia_wood": "minecraft:stripped_acacia_wood",
"minecraft:bamboo_block": "minecraft:stripped_bamboo_block",
"minecraft:birch_log": "minecraft:stripped_birch_log",
"minecraft:birch_wood": "minecraft:stripped_birch_wood",
"minecraft:cherry_log": "minecraft:stripped_cherry_log",
"minecraft:cherry_wood": "minecraft:stripped_cherry_wood",
"minecraft:crimson_hyphae": "minecraft:stripped_crimson_hyphae",
"minecraft:crimson_stem": "minecraft:stripped_crimson_stem",
"minecraft:dark_oak_log": "minecraft:stripped_dark_oak_log",
"minecraft:dark_oak_wood": "minecraft:stripped_dark_oak_wood",
"minecraft:jungle_log": "minecraft:stripped_jungle_log",
"minecraft:jungle_wood": "minecraft:stripped_jungle_wood",
"minecraft:mangrove_log": "minecraft:stripped_mangrove_log",
"minecraft:mangrove_wood": "minecraft:stripped_mangrove_wood",
"minecraft:oak_log": "minecraft:stripped_oak_log",
"minecraft:oak_wood": "minecraft:stripped_oak_wood",
"minecraft:pale_oak_log": "minecraft:stripped_pale_oak_log",
"minecraft:pale_oak_wood": "minecraft:stripped_pale_oak_wood",
"minecraft:poplar_log": "minecraft:stripped_poplar_log",
"minecraft:poplar_wood": "minecraft:stripped_poplar_wood",
"minecraft:spruce_log": "minecraft:stripped_spruce_log",
"minecraft:spruce_wood": "minecraft:stripped_spruce_wood",
"minecraft:warped_hyphae": "minecraft:stripped_warped_hyphae",
"minecraft:warped_stem": "minecraft:stripped_warped_stem"
}
}
```
## Actions
- Added the `#minecraft:use_axe_on_block` action tag, which allows you to add your own custom actions to axes.
- Vanilla uses it to strip wood, scrape copper off blocks and unwax blocks.
- Note that this is not the same as vanilla's `minecraft:block_transformer` data component, which is not used in item behaviour (but still available for item stacks!), as the action system is more versatile.
- The `minecraft:till_rooted_dirt` action now drops the `minecraft:till/rooted_dirt` loot table instead of dropping an item directly.
- Added `minecraft:drop_loot`.
- Expanded the following action types:
- `minecraft:drop_item_from_block`
- `minecraft:swing_hand`
- `minecraft:spawn_entity`
- `minecraft:teleport`
- Renamed `minecraft:modify_block_state` to `minecraft:transform_block_state` and expanded it.
So if you had this:
```json
{
"type": "minecraft:modify_block_state",
"position": "interacted",
"properties": {
"eye": "true"
},
"push_entities_upwards": true
}
```
You now have to use this instead:
```json
{
"type": "minecraft:transform_block_state",
"position": "interacted",
"provider": {
"type": "minecraft:apply_properties",
"properties": {
"eye": "true"
}
},
"push_entities_upwards": true
}
```
### `minecraft:drop_item_from_block`
- Added an optional `drop_strategy` field, which determines where in the block to spawn the item.
- Its value can be either `from_middle` or `clicked_face`.
- Defaults to `clicked_face` for backwards compatibility.
### `minecraft:drop_loot`
- Drops item stacks from the provided loot table.
- Fails if the is targeted position is not part of the context.
- If the `minecraft:side` context parameter is not part of the context, a default value of `up` will be used instead.
- Format:
- `position`: A position target. The position to spawn the items at.
- `loot_table`: A loot table id. The loot table to call.
- `drop_strategy`: An optional drop strategy. Where in the block to spawn the items from the loot table. Defaults to `from_middle`.
Example:
```json
{
"type": "minecraft:drop_loot",
"drop_strategy": "clicked_face",
"loot_table": "minecraft:till/rooted_dirt",
"position": "interacted"
}
```
### `minecraft:spawn_entity`
- The `entity.spawn_rules` field must now point to an entity spawn rule set.
- See the `minecraft:entity` item behaviour changes for more information.
### `minecraft:swing_hand`
- Added an optional `animation` field.
- Determines the hand swing animation to play.
- Its value is a swing animation with a default value of `{"type": whack, "duration": 6}`.
### `minecraft:teleport`
- Added an optional `unsafe_blocks` field.
- Determines what blocks are unsafe to be teleported on.
- If not present, all blocks are considered safe.
- Its value is a block, list of blocks or hash-prefixed block tag.
- Added an optional `directional_particles` field.
- Determines whether to display specific teleportation particles.
- Its value is a boolean with a default value of `true`.
Example:
```json
{
"type": "minecraft:teleport",
"distance": 16,
"entity": "this",
"unsafe_blocks": "#minecraft:consumable_does_not_teleport_to"
}
```
### `minecraft:transform_block_state`
- Transforms a block state using a block state provider.
- Format:
- `position`: A position target. The position of the block to transform.
- `provider`: A block state provider or inline block state provider. Determines how to transform the block state.
- `transform_type`: An optional block transformer transform type. How nearby blocks should be affected by the transformation. Defaults to `single_block`.
- Its value can be either `single_block` or `copper_chest`.
- `particle`: An optional block transformer transform particle. The particle to display after modifying the block state. Defaults to `none`.
- Its value can be either `none`, `scrape`, `wax_on` or `wax_off`.
- `push_entities_upwards`: An optional boolean. Whether to push entities that would be clipping inside the modified block state upwards. Defaults to `false`.
Example:
```json
{
"type": "minecraft:transform_block_state",
"position": "interacted",
"provider": {
"type": "minecraft:apply_properties",
"properties": {
"eye": "true"
}
},
"push_entities_upwards": true
}
```
## World Modifications
- Added the `minecraft:none` world modification type.
### `minecraft:none`
- Doesn't modify the world in any way.
- Format:
- `transforms_into`: An item. The item to leave.
Example:
```json
{
"type": "minecraft:none",
"transforms_into": "minecraft:bucket"
}
```
## Item Modifiers
- Expanded `minecraft:split`.
### `minecraft:split`
- The `count` field now uses a context int provider.
## Predicates
- Moved custom entity predicate fields to ids.
- Existing entity predicates are still valid, just like vanilla.
So if you had this:
```json
{
"in_water_or_rain": true,
"used_item_ticks": {
"min": 10
}
}
```
You now have to use this instead:
```json
{
"minecraft:in_water_or_rain": true,
"minecraft:used_item_ticks": {
"min": 10
}
}
```
release
Itematic 0.8.0 for 26.1
0.8.0+26.122 сент. 2026 г.50Minecraft: 26.1, 26.1.1, 26.1.2fabric
Что нового
## Itematic 0.8.0 for 26.1
### 22nd of September 2026
The first release part of the new versioning system for Minecraft!
With Minecraft 26.3 out, I am getting closer and closer to being up-to-date with the game...
This version keeps unknown items from being deleted, adds cancellable item events and moves a few hardcoded items to tags!
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
- Unknown items are now retained instead of being deleted.
- An item stack with an unknown item:
- Renders as a red exclamation mark with a yellow outline.
- Has a name and tooltip mentioning that it could not load the item.
- Displays its stack size, just like normal item stacks.
- Can stack up to their current stack size.
- For example, a stack of 30 will use 30 as its max stack size until the count is modified, such as by splitting the stack in half, in which case it will be 15 for both item stacks.
- This means that the item stack can still be moved around without snapping to a single item, while at the same time it prevents a player from accidentally overflowing item stack sizes.
- Cannot be interacted with.
- Cannot interact with other items, such as inserting it into a Bundle.
- Cannot be used to interact with blocks.
- Cannot be used to destroy blocks. (This includes Creative mode!)
- Cannot be used to interact with entities.
- Cannot be used to hit entities.
- Does not have any animations.
- Can be moved around between inventories as to not forcefully take up a slot.
- Can be dropped on the ground as to not forcefully take up a slot.
- Is not treated as an empty item stack.
- Is never considered to be equal to another item stack, even if the item id, count and data components match.
- Is treated as a disabled item stack.
- Cannot be picked up from saved hotbars.
- Cannot be modified via item modifiers.

- Removed trades.
- This has been replaced by a new system in vanilla.
## Items
- The items in `#minecraft:beacon_payment_items` are now rendered in the Beacon screen instead of using a set of hardcoded items.
- They are displayed in an automatically moving carousel going forwards and backwards.
- Each movement has a delay of 1.5 seconds.
- It only displays five items at once, just like vanilla.
- This in turn fixes [MC-235757](https://mojira.dev/MC-235757).
<br/>

## Blocks
- Added the `#minecraft:has_marker_particle` tag.
- Represents blocks that render a block marker particle at their position when holding an item that places said block.
<br/>

## Item Behaviour Components
- Expanded `minecraft:attack_blocking`.
- The `bypassed_by` field now also accepts a damage type or list of damage types in addition to a damage type tag.
- Expanded `minecraft:banner_pattern`.
- The `patterns` field now also accepts a banner pattern or list of banner patterns in addition to a banner pattern tag.
- This also means that existing entries must be changed to have a `#` in front of them.
So if you had this:
```json
{
"minecraft:banner_pattern": {
"patterns": "minecraft:pattern_item/flower"
}
}
```
You now have to use this instead:
```json
{
"minecraft:banner_pattern": {
"patterns": "#minecraft:pattern_item/flower"
}
}
```
- Removed `minecraft:dyeable`.
- Adding dye has been replaced by the new `minecraft:crafting_dye` recipe type.
- Removing dye via a Cauldron is now controlled by the `#minecraft:cauldron_can_remove_dye` tag.
- Removed `minecraft:firework_shape_modifier`.
- This has been replaced by the `shapes` field in the `minecraft:crafting_special_firework_star` recipe for direct usage.
- Expanded `minecraft:immune_to_damage`.
- The `damage` field now also accepts a damage type or list of damage types in addition to a damage type tag.
- This also means that existing entries must be changed to have a `#` in front of them.
So if you had this:
```json
{
"minecraft:immune_to_damage": {
"damage": "minecraft:is_explosion"
}
}
```
You now have to use this instead:
```json
{
"minecraft:immune_to_damage": {
"damage": "#minecraft:is_explosion"
}
}
```
- Expanded `minecraft:item_holder`.
- Added the `insert_fail_item_sound` field, which is a sound event that plays whenever a Player fails to add an item to the item holder.
## Item Events
- Adds two cancellable item events:
- `minecraft:before_use_on_block`, which is called before running the item behaviour when used on a block.
- `minecraft:before_use_on_entity`, which is called before running the item behaviour when used on an entity.
## Actions
- Action event entries gain a new format, one that allows you to cancel the original call when successful.
- Fields:
- `entry`: An action or inlined action. The actual action to run.
- `cancel_original_call_on_success`: A boolean. Indicates whether to cancel the original event call. Does not work for all events.
- The original format is equivalent to setting `cancel_original_call_on_success` to `false`.
- Note that not every event is cancellable as it is based on outside conditions.
Example:
```json
{
"minecraft:before_use_on_block": {
"cancel_original_call_on_success": true,
"entry": {
"action": {
"type": "minecraft:sequence",
"handler": "minecraft:passing",
"entries": [
{
"action": {
"type": "minecraft:set_block_state",
"position": "interacted",
"state": {
"Name": "minecraft:potted_dandelion"
}
}
},
{
"action": {
"type": "minecraft:invoke_game_event",
"event": "minecraft:block_change",
"entity": "this",
"position": "interacted"
}
},
{
"action": {
"type": "minecraft:increment_stat",
"entity": "this",
"stat": {
"type": "minecraft:custom",
"entry": "minecraft:pot_flower"
}
}
},
{
"action": {
"type": "minecraft:decrement_item",
"amount": 1
}
},
{
"action": {
"type": "minecraft:swing_hand",
"entity": "this"
}
}
]
},
"requirements": {
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:flower_pot"
}
}
}
}
}
}
```
## Item Group Entry Providers
- Replaced the keys of item group entry types with identifiers.
- Replaced `minecraft:stack` and `minecraft:tag` with a single `minecraft:item` item group entry.
- This simplifies creating simple item stacks as they are now part of the same type.
- This means that lists of items and item tags can now be inlined as well alongside single items.
- This also means that the same data components can be applied to multiple items at once.
So if you had this:
```json
{
"id": "minecraft:firework_rocket",
"type": "minecraft:stack",
"components": {
"minecraft:fireworks": {
"flight_duration": 1
}
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:item",
"components": {
"minecraft:fireworks": {
"flight_duration": 1
}
},
"items": "minecraft:firework_rocket"
}
```
Additionally, if you had this:
```json
{
"type": "minecraft:tag",
"tag": "minecraft:item_group/wooden_building_blocks"
}
```
You now have to use this instead:
```json
"#minecraft:item_group/wooden_building_blocks"
```
Or this in case you also want to add data components to all items in the tag:
```json
{
"type": "minecraft:item",
"items": "#minecraft:item_group/wooden_building_blocks"
}
```
## `minecraft:item`
- Adds items in the specified order with an optional set of data components.
- Format:
- `items`: An item, list of items or hash-prefixed item tag. The items to add.
- `components`: An optional set of data components. The data components to add to each item.
Example:
```json
{
"type": "minecraft:item",
"components": {
"minecraft:fireworks": {
"flight_duration": 1
}
},
"items": "minecraft:firework_rocket"
}
```
## `minecraft:instrument`
- Now allows you to define an instrument or list of instruments to use, rather than just a tag.
- This means that tags require an additional `#` prefix to use them.
- Renamed the `tag` field to `instruments`.
- New format:
- `item`: An item. The item to use.
- `instruments`: An instrument, list of instruments or hash-prefixed instrument tag. The instruments to add.
So if you had this:
```json
{
"type": "minecraft:instrument",
"item": "minecraft:goat_horn",
"tag": "minecraft:goat_horns"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:instrument",
"instruments": "#minecraft:goat_horns",
"item": "minecraft:goat_horn"
}
```
## `minecraft:painting_variant`
- Renamed the `tag` field to `painting_variants`.
- New format:
- `item`: An item. The item to use.
- `painting_variants`: A painting variant tag predicate. The painting variants to match and use.
So if you had this:
```json
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"tag": {
"id": "minecraft:placeable",
"expected": true
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"painting_variants": {
"id": "minecraft:placeable",
"expected": true
}
}
```
## Item Modifiers
- Removed the `minecraft:dye` item modifier.
- This has been replaced by the new `minecraft:set_random_dyes` in vanilla.
- Note that this implementation is different and thus requires a different approach to achieve the same result.
So if you had this:
```json
{
"chances": [
1.0,
0.3,
0.2
],
"function": "minecraft:dye"
}
```
You now have to use this instead:
```json
{
"function": "minecraft:set_random_dyes",
"number_of_dyes": {
"type": "minecraft:sum",
"summands": [
1.0,
{
"type": "minecraft:binomial",
"n": 2.0,
"p": 0.75
}
]
}
}
```
## Predicates
### Entity Predicates
- Removed the `minecraft:villager` entity sub-predicate.
- The new data component check should be used instead.
So if you had this:
```json
{
"type_specific": {
"type": "minecraft:villager",
"variant": "minecraft:swamp"
}
}
```
You now have to use this instead:
```json
{
"predicates": {
"minecraft:villager/variant": "minecraft:swamp"
}
}
```
## Recipes
- Allowed remainders for the ingredients in the following recipe types:
- `minecraft:crafting_decorated_pot`
- `minecraft:crafting_dye`
- `minecraft:crafting_imbue`
- `minecraft:crafting_special_bannerduplicate`
- `minecraft:crafting_special_bookcloning`
- `minecraft:crafting_special_firework_rocket`
- `minecraft:crafting_special_firework_star`
- `minecraft:crafting_special_firework_star_fade`
- `minecraft:crafting_special_mapextending`
- `minecraft:crafting_special_shielddecoration`
# Fixes
- Items that are supposed to be pottable can now be potted again.
- Picking container blocks with unloadable items now creates an item stack correctly.
- Unloadable item stacks now no longer incorrectly match with empty stacks in certain places.
- Unloadable item stacks now no longer snap to a single item when moved around in an inventory.
- Placing blocks that are attached to sides now always target the appropriate side it's used on.
- Blocks with collision shapes that depend on the held item now use the correct shape.
- Item holders now render the correct occupancy in their tooltip bar when a different capacity is used.
- Item holders now no longer delete an item stack from their contents when one is already present in a Player's inventory who is in Creative mode.
beta
Itematic 0.8.0 Preview 3 for 26.1
0.8.0-preview.3+26.120 сент. 2026 г.50Minecraft: 26.1, 26.1.1, 26.1.2fabric
Что нового
## Itematic 0.8.0 Preview 3 for 26.1
### 20th of September 2026
This preview moves a few hardcoded items to tags and comes with a couple of bug fixes.
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
## Items
- The items in `#minecraft:beacon_payment_items` are now rendered in the Beacon screen instead of using a set of hardcoded items.
- They are displayed in an automatically moving carousel going forwards and backwards.
- Each movement has a delay of 1.5 seconds.
- It only displays five items at once, just like vanilla.
- This in turn fixes [MC-235757](https://mojira.dev/MC-235757).
<br/>

## Blocks
- Added the `#minecraft:has_marker_particle` tag.
- Represents blocks that render a block marker particle at their position when holding an item that places said block.
<br/>

# Fixes
- Placing blocks that are attached to sides now always target the appropriate side it's used on.
- Blocks with collision shapes that depend on the held item now use the correct shape.
- Item holders now render the correct occupancy in their tooltip bar when a different capacity is used.
- Item holders now no longer delete an item stack from their contents when one is already present in a Player's inventory who is in Creative mode.
beta
Itematic 0.8.0 Preview 2 for 26.1
0.8.0-preview.2+26.115 сент. 2026 г.31Minecraft: 26.1, 26.1.1, 26.1.2fabric
Что нового
## Itematic 0.8.0 Preview 2 for 26.1
### 15th of September 2026
This preview improves unloadable items and fixes related bugs.
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
## Items
- Unknown items now use a model instead of being rendered as-is.
- This model is built-in and thus cannot be overridden.
- This makes them more consistent with the way they are rendered and with other models and also makes them work automatically instead of needing special overrides.
- This means that they no longer face the camera in certain places.
- Item stacks with unloadable items can now properly stack up to their current stack size.
- For example, a stack of 30 will use 30 as its max stack size until the count is modified, such as by splitting the stack in half, in which case it will be 15 for both item stacks.
- This prevents them from being accidentally destroyed.
- This also means that the item stack can still be moved around without snapping to a single item, while at the same time it prevents a player from accidentally overflowing item stack counts.
- This is the case because the game cannot be certain about the actual max stack size; The item doesn't exist after all!
- Unloadable item stacks now display their count where appropriate, just like normal item stacks.

# Fixes
- Picking container blocks with unloadable items now creates an item stack correctly.
- Unloadable item stacks now no longer incorrectly match with empty stacks in certain places.
- Unloadable item stacks now no longer snap to a single item when moved around in an inventory.
beta
Itematic 0.8.0 Preview 1 for 26.1
0.8.0-preview.1+26.18 сент. 2026 г.36Minecraft: 26.1, 26.1.1, 26.1.2fabric
Что нового
## Itematic 0.8.0 Preview 1 for 26.1
### 8th of September 2026
The first preview that is part of the new versioning system for Minecraft! 🎉
I am getting closer and closer to being up-to-date with the game...
In any way, this preview keeps unknown items from being deleted and adds cancellable item events!
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
- Unknown items are now retained instead of being deleted.
- There are still bugs in this system and parts of it may change.
- An item stack with an unknown item:
- Renders as a red exclamation mark with a yellow outline.
- Has a name and tooltip mentioning that it could not load the item.
- Cannot be interacted with.
- Cannot interact with other items (such as inserting it into a Bundle).
- Cannot be used to interact with blocks.
- Cannot be used to destroy blocks (this includes Creative mode!).
- Cannot be used to interact with entities.
- Cannot be used to hit entities.
- Does not have any animations.
- Can be moved around between inventories as to not forcefully take up a slot.
- Can be dropped on the ground as to not forcefully take up a slot.
- Is not treated as an empty item stack.
- Is never considered to be equal to another item stack, even if the item id, count and data components match.
- Is treated as a disabled item stack.
- Cannot be picked up from saved hotbars.
- Cannot be modified via item modifiers.

- Removed trades.
- This has been replaced by a new system in vanilla.
## Item Behaviour Components
- Expanded `minecraft:attack_blocking`.
- The `bypassed_by` field now also accepts a damage type or list of damage types in addition to a damage type tag.
- Expanded `minecraft:banner_pattern`.
- The `patterns` field now also accepts a banner pattern or list of banner patterns in addition to a banner pattern tag.
- This also means that existing entries must be changed to have a `#` in front of them.
So if you had this:
```json
{
"minecraft:banner_pattern": {
"patterns": "minecraft:pattern_item/flower"
}
}
```
You now have to use this instead:
```json
{
"minecraft:banner_pattern": {
"patterns": "#minecraft:pattern_item/flower"
}
}
```
- Removed `minecraft:dyeable`.
- Adding dye has been replaced by the new `minecraft:crafting_dye` recipe type.
- Removing dye via a Cauldron is now controlled by the `#minecraft:cauldron_can_remove_dye` tag.
- Removed `minecraft:firework_shape_modifier`.
- This has been replaced by the `shapes` field in the `minecraft:crafting_special_firework_star` recipe for direct usage.
- Expanded `minecraft:immune_to_damage`.
- The `damage` field now also accepts a damage type or list of damage types in addition to a damage type tag.
- This also means that existing entries must be changed to have a `#` in front of them.
So if you had this:
```json
{
"minecraft:immune_to_damage": {
"damage": "minecraft:is_explosion"
}
}
```
You now have to use this instead:
```json
{
"minecraft:immune_to_damage": {
"damage": "#minecraft:is_explosion"
}
}
```
- Expanded `minecraft:item_holder`.
- Added the `insert_fail_item_sound` field, which is a sound event that plays whenever a Player fails to add an item to the item holder.
## Item Events
- Adds two cancellable item events:
- `minecraft:before_use_on_block`, which is called before running the item behaviour when used on a block.
- `minecraft:before_use_on_entity`, which is called before running the item behaviour when used on an entity.
## Actions
- Action event entries gain a new format, one that allows you to cancel the original call when successful.
- Fields:
- `entry`: An action or inlined action. The actual action to run.
- `cancel_original_call_on_success`: A boolean. Indicates whether to cancel the original event call. Does not work for all events.
- The original format is equivalent to setting `cancel_original_call_on_success` to `false`.
- Note that not every event is cancellable as it is based on outside conditions.
Example:
```json
{
"minecraft:before_use_on_block": {
"cancel_original_call_on_success": true,
"entry": {
"action": {
"type": "minecraft:sequence",
"handler": "minecraft:passing",
"entries": [
{
"action": {
"type": "minecraft:set_block_state",
"position": "interacted",
"state": {
"Name": "minecraft:potted_dandelion"
}
}
},
{
"action": {
"type": "minecraft:invoke_game_event",
"event": "minecraft:block_change",
"entity": "this",
"position": "interacted"
}
},
{
"action": {
"type": "minecraft:increment_stat",
"entity": "this",
"stat": {
"type": "minecraft:custom",
"entry": "minecraft:pot_flower"
}
}
},
{
"action": {
"type": "minecraft:decrement_item",
"amount": 1
}
},
{
"action": {
"type": "minecraft:swing_hand",
"entity": "this"
}
}
]
},
"requirements": {
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:flower_pot"
}
}
}
}
}
}
```
## Item Group Entry Providers
- Replaced the keys of item group entry types with identifiers.
- Replaced `minecraft:stack` and `minecraft:tag` with a single `minecraft:item` item group entry.
- This simplifies creating simple item stacks as they are now part of the same type.
- This means that lists of items and item tags can now be inlined as well alongside single items.
- This also means that the same data components can be applied to multiple items at once.
So if you had this:
```json
{
"id": "minecraft:firework_rocket",
"type": "minecraft:stack",
"components": {
"minecraft:fireworks": {
"flight_duration": 1
}
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:item",
"components": {
"minecraft:fireworks": {
"flight_duration": 1
}
},
"items": "minecraft:firework_rocket"
}
```
Additionally, if you had this:
```json
{
"type": "minecraft:tag",
"tag": "minecraft:item_group/wooden_building_blocks"
}
```
You now have to use this instead:
```json
"#minecraft:item_group/wooden_building_blocks"
```
Or this in case you also want to add data components to all items in the tag:
```json
{
"type": "minecraft:item",
"items": "#minecraft:item_group/wooden_building_blocks"
}
```
## `minecraft:item`
- Adds items in the specified order with an optional set of data components.
- Format:
- `items`: An item, list of items or hash-prefixed item tag. The items to add.
- `components`: An optional set of data components. The data components to add to each item.
Example:
```json
{
"type": "minecraft:item",
"components": {
"minecraft:fireworks": {
"flight_duration": 1
}
},
"items": "minecraft:firework_rocket"
}
```
## `minecraft:instrument`
- Now allows you to define an instrument or list of instruments to use, rather than just a tag.
- This means that tags require an additional `#` prefix to use them.
- Renamed the `tag` field to `instruments`.
- New format:
- `item`: An item. The item to use.
- `instruments`: An instrument, list of instruments or hash-prefixed instrument tag. The instruments to add.
So if you had this:
```json
{
"type": "minecraft:instrument",
"item": "minecraft:goat_horn",
"tag": "minecraft:goat_horns"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:instrument",
"instruments": "#minecraft:goat_horns",
"item": "minecraft:goat_horn"
}
```
## `minecraft:painting_variant`
- Renamed the `tag` field to `painting_variants`.
- New format:
- `item`: An item. The item to use.
- `painting_variants`: A painting variant tag predicate. The painting variants to match and use.
So if you had this:
```json
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"tag": {
"id": "minecraft:placeable",
"expected": true
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:painting_variant",
"item": "minecraft:painting",
"painting_variants": {
"id": "minecraft:placeable",
"expected": true
}
}
```
## Item Modifiers
- Removed the `minecraft:dye` item modifier.
- This has been replaced by the new `minecraft:set_random_dyes` in vanilla.
- Note that this implementation is different and thus requires a different approach to achieve the same result.
So if you had this:
```json
{
"chances": [
1.0,
0.3,
0.2
],
"function": "minecraft:dye"
}
```
You now have to use this instead:
```json
{
"function": "minecraft:set_random_dyes",
"number_of_dyes": {
"type": "minecraft:sum",
"summands": [
1.0,
{
"type": "minecraft:binomial",
"n": 2.0,
"p": 0.75
}
]
}
}
```
## Predicates
### Item Predicates
- Removed the `behavior` field.
- Appropriate data components should be used instead.
- Note that not everything can be replicated yet.
So if you had this:
```json
{
"behavior": [
"minecraft:item_holder"
]
}
```
You now have to use this instead:
```json
{
"predicates": {
"minecraft:bundle_contents": {}
}
}
```
### Entity Predicates
- Removed the `minecraft:villager` entity sub-predicate.
- The new data component check should be used instead.
So if you had this:
```json
{
"type_specific": {
"type": "minecraft:villager",
"variant": "minecraft:swamp"
}
}
```
You now have to use this instead:
```json
{
"predicates": {
"minecraft:villager/variant": "minecraft:swamp"
}
}
```
## Recipes
- Allowed remainders for the ingredients in the following recipe types:
- `minecraft:crafting_decorated_pot`
- `minecraft:crafting_dye`
- `minecraft:crafting_imbue`
- `minecraft:crafting_special_bannerduplicate`
- `minecraft:crafting_special_bookcloning`
- `minecraft:crafting_special_firework_rocket`
- `minecraft:crafting_special_firework_star`
- `minecraft:crafting_special_firework_star_fade`
- `minecraft:crafting_special_mapextending`
- `minecraft:crafting_special_shielddecoration`
# Fixes
- Items that are supposed to be pottable can now be potted again.
release
Itematic 0.7.0 for 1.21.11
0.7.0+1.21.113 авг. 2026 г.155Minecraft: 1.21.11fabric
Что нового
The final version for 1.21! This means I can finally move to 26.x and leave this mess of a versioning system and much more behind! 🎉🎉🎉
This version expands melee weapon items significantly.
A new roadmap has been made alongside this version showing what to expect and how I will migrate to 26.x as quickly as possible.
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
## Item Behaviour Components
### `minecraft:useable`
- Added an optional `effects` field.
- Its format is the same as the `minecraft:use_effects` data component.
- Provides the `minecraft:use_effects` data component.
### `minecraft:weapon`
- Added the `types` field, which is a map of melee weapon components.
- See the Melee Weapons section for more information.
- Replaced the `may_smash` field with more possibilities in the new `minecraft:smashing` melee weapon component.
- Moved the `disable_blocking_for_seconds` field to the new `minecraft:disables_blocking` melee weapon component.
So if you had this:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 5.0,
"rules": []
},
"attack_speed": 0.15,
"may_smash": true
}
}
```
You now have to use this instead:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 5.0,
"rules": []
},
"attack_speed": 0.15,
"types": {
"minecraft:smashing": {
"heavy_smash_attack_fall_distance": 5.0,
"hit_sounds": {
"in_air": "minecraft:item.mace.smash_air",
"on_ground_large_fall_distance": "minecraft:item.mace.smash_ground_heavy",
"on_ground_small_fall_distance": "minecraft:item.mace.smash_ground"
},
"knockback_power": 0.699999988079071,
"smash_attack_fall_distance": 1.5
}
}
}
}
```
Example from the Iron Spear:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 2.0,
"rules": []
},
"attack_range": {
"hitbox_margin": 0.125,
"max_creative_reach": 6.5,
"max_reach": 4.5,
"min_creative_reach": 2.0,
"min_reach": 2.0,
"mob_factor": 0.5
},
"attack_speed": 0.2631579041481018,
"damage_type": "minecraft:spear",
"minimum_attack_charge": 1.0,
"swing_animation": {
"type": "stab",
"duration": 19
},
"types": {
"minecraft:kinetic": {
"damage_conditions": {
"max_duration_ticks": 225,
"min_relative_speed": 4.6
},
"damage_multiplier": 0.95,
"delay_ticks": 12,
"dismount_conditions": {
"max_duration_ticks": 50,
"min_speed": 8.0
},
"forward_movement": 0.38,
"hit_sound": "minecraft:item.spear.hit",
"knockback_conditions": {
"max_duration_ticks": 135,
"min_speed": 5.1
},
"sound": "minecraft:item.spear.use"
},
"minecraft:piercing": {
"hit_sound": "minecraft:item.spear.hit",
"sound": "minecraft:item.spear.attack"
}
}
}
}
```
- Added an optional `attack_range` field.
- Determines the attack range and hitbox margin when trying to attack entities.
- Its format is the same as the `minecraft:attack_range` data component.
- Provides the `minecraft:attack_range` data component.
- Added an optional `damage_type` field.
- Specifies the damage type the weapon deals.
- Its format is an id pointing to a damage type.
- Provides the `minecraft:damage_type` data component.
- Added an optional `minimum_attack_charge` field.
- Specifies the minimum attack charge on the attack indicator required to attack with the weapon.
- Its format is a float ranging from 0 to 1 inclusive.
- Provides the `minecraft:minimum_attack_charge` data component.
- Added an optional `swing_animation` field.
- Allows a different animation to be used when attacking.
- Its format is the same as the `minecraft:swing_animation` data component.
- Provides the `minecraft:swing_animation` data component.
## Melee Weapons
Allows a melee weapon to be used in a specific way. Its value is a component map with melee weapon components.
### `minecraft:disables_blocking`
- Provides a way to disable an attack blocking item that is being used.
- Fields:
- `seconds`: A non-negative float. The amount of seconds to disable the attack blocking item for.
- The `disable_blocking_for_seconds` in the `minecraft:weapon` data component is still present and used to keep compatibility with existing data components.
Example:
```json
{
"minecraft:disables_blocking": {
"seconds": 5.0
}
}
```
### `minecraft:kinetic`
- Allows this weapon to have a charging attack when using the item.
- Its format is the same as the `minecraft:kinetic_weapon` data component.
Example:
```json
{
"minecraft:kinetic": {
"damage_conditions": {
"max_duration_ticks": 225,
"min_relative_speed": 4.6
},
"damage_multiplier": 0.95,
"delay_ticks": 12,
"dismount_conditions": {
"max_duration_ticks": 50,
"min_speed": 8.0
},
"forward_movement": 0.38,
"hit_sound": "minecraft:item.spear.hit",
"knockback_conditions": {
"max_duration_ticks": 135,
"min_speed": 5.1
},
"sound": "minecraft:item.spear.use"
}
}
```
### `minecraft:piercing`
- Allows this weapon to damage multiple entities along a ray instead of a single entity.
- Its format is the same as the `minecraft:piercing_weapon` data component.
Example:
```json
{
"minecraft:piercing": {
"hit_sound": "minecraft:item.spear.hit",
"sound": "minecraft:item.spear.attack"
}
}
```
### `minecraft:smashing`
- Allows this weapon to attack entities by falling on them.
- Fields:
- `hit_sounds`: A map with sounds. The sounds to play when hitting entities with a smashing attack.
- `in_air`: A sound event. The sound to play when airborne.
- `on_ground_small_fall_distance`: A sound event. The sound to play when dealing a regular smashing attack.
- `on_ground_large_fall_distance`: A sound event. The sound to play when dealing a heavy smashing attack.
- `smash_attack_fall_distance`: A positive double. The minimum distance required to fall to deal a smashing attack.
- `heavy_smash_attack_fall_distance`: A positive double. The minimum distance required to fall to deal a heavy smashing attack.
- `knockback_power`: A positive double. The maximum knockback power to deal to nearby entities when dealing a smashing attack.
Example:
```json
{
"minecraft:smashing": {
"heavy_smash_attack_fall_distance": 5.0,
"hit_sounds": {
"in_air": "minecraft:item.mace.smash_air",
"on_ground_large_fall_distance": "minecraft:item.mace.smash_ground_heavy",
"on_ground_small_fall_distance": "minecraft:item.mace.smash_ground"
},
"knockback_power": 0.699999988079071,
"smash_attack_fall_distance": 1.5
}
}
```
## Data Components
- Added the following data components:
- `minecraft:smashing_weapon`
### `minecraft:smashing_weapon`
- Specified and used by the `minecraft:smashing` melee weapon component in the `minecraft:weapon` behaviour component.
- If removed, no smash attack will be applied.
- Its value is the same as the one specified in the `minecraft:smashing` melee weapon component.
Example:
```json
{
"heavy_smash_attack_fall_distance": 5.0,
"hit_sounds": {
"in_air": "minecraft:item.mace.smash_air",
"on_ground_large_fall_distance": "minecraft:item.mace.smash_ground_heavy",
"on_ground_small_fall_distance": "minecraft:item.mace.smash_ground"
},
"knockback_power": 0.699999988079071,
"smash_attack_fall_distance": 1.5
}
```
## Predicates
### Item Predicates
- Removed the `data_components` field in favour of vanilla's component predicates.
So if you had this:
```json
{
"data_components": [
"minecraft:bees"
]
}
```
You now have to use this instead:
```json
{
"predicates": {
"minecraft:bees": {}
}
}
```
# Fixes
- Skeleton-like entities can now use any direct shooter instead of just Bows.
- Piglins and Pillagers can now use any chargeable shooter instead of just Crossbows.
- Melee weapons now correctly do not apply item damage when attacking an entity in creative mode.
- The correct sounds are now played when using a smashing weapon.
beta
Itematic 0.7.0 Preview 3 for 1.21.11
0.7.0-preview.3+1.21.112 авг. 2026 г.31Minecraft: 1.21.11fabric
Что нового
This preview version comes with a new melee weapon component and a fix for smashing weapons.
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
## Item Behaviour Components
### `minecraft:weapon`
- Moved the `disable_blocking_for_seconds` field to the new `minecraft:disables_blocking` melee weapon component.
So if you had this:
```json
{
"attack_damage": {
"default_damage": 9.0,
"rules": []
},
"attack_speed": 0.225,
"disable_blocking_for_seconds": 5.0,
"item_damage_per_attack": 2
}
```
You now have to use this instead:
```json
{
"attack_damage": {
"default_damage": 9.0,
"rules": []
},
"attack_speed": 0.225,
"item_damage_per_attack": 2,
"types": {
"minecraft:disables_blocking": {
"seconds": 5.0
}
}
}
```
## Melee Weapons
### `minecraft:disables_blocking`
- Provides a way to disable an attack blocking item that is being used.
- Fields:
- `seconds`: A non-negative float. The amount of seconds to disable the attack blocking item for.
- The `disable_blocking_for_seconds` in the `minecraft:weapon` data component is still present and used to keep compatibility with existing data components.
Example:
```json
{
"minecraft:disables_blocking": {
"seconds": 5.0
}
}
```
# Fixes
- The correct sounds are now played when using a smashing weapon.
beta
Itematic 0.7.0 Preview 2 for 1.21.11
0.7.0-preview.2+1.21.1124 июл. 2026 г.44Minecraft: 1.21.11fabric
Что нового
This preview version comes with some extensions to smashing weapons!
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
## Item Behaviour Components
### `minecraft:weapon`
- Added fields to the `minecraft:smashing` melee weapon component.
- See the Melee Weapons section for more information.
## Melee Weapons
### `minecraft:smashing`
- Now has fields that configure the way the smash attack behaves.
- Fields:
- `hit_sounds`: A map with sounds. The sounds to play when hitting entities with a smashing attack.
- `in_air`: A sound event. The sound to play when airborne.
- `on_ground_small_fall_distance`: A sound event. The sound to play when dealing a regular smashing attack.
- `on_ground_large_fall_distance`: A sound event. The sound to play when dealing a heavy smashing attack.
- `smash_attack_fall_distance`: A positive double. The minimum distance required to fall to deal a smashing attack.
- `heavy_smash_attack_fall_distance`: A positive double. The minimum distance required to fall to deal a heavy smashing attack.
- `knockback_power`: A positive double. The maximum knockback power to deal to nearby entities when dealing a smashing attack.
Example:
```json
{
"minecraft:smashing": {
"heavy_smash_attack_fall_distance": 5.0,
"hit_sounds": {
"in_air": "minecraft:item.mace.smash_air",
"on_ground_large_fall_distance": "minecraft:item.mace.smash_ground_heavy",
"on_ground_small_fall_distance": "minecraft:item.mace.smash_ground"
},
"knockback_power": 0.699999988079071,
"smash_attack_fall_distance": 1.5
}
}
```
## Data Components
- Added the following data components:
- `minecraft:smashing_weapon`
### `minecraft:smashing_weapon`
- Specified and used by the `minecraft:smashing` melee weapon component in the `minecraft:weapon` behaviour component.
- If removed, no smash attack will be applied.
- Its value is the same as the one specified in the `minecraft:smashing` melee weapon component.
Example:
```json
{
"heavy_smash_attack_fall_distance": 5.0,
"hit_sounds": {
"in_air": "minecraft:item.mace.smash_air",
"on_ground_large_fall_distance": "minecraft:item.mace.smash_ground_heavy",
"on_ground_small_fall_distance": "minecraft:item.mace.smash_ground"
},
"knockback_power": 0.699999988079071,
"smash_attack_fall_distance": 1.5
}
```
# Fixes
- Melee weapons now correctly do not apply item damage when attacking an entity in creative mode.
beta
Itematic 0.7.0 Preview 1 for 1.21.11
0.7.0-preview.1+1.21.1119 июл. 2026 г.25Minecraft: 1.21.11fabric
Что нового
We're moving all the way to the end of Minecraft 1.21 with the first preview version for 0.7.0!
This preview expands melee weapon items significantly.
A new roadmap has been made alongside this preview showing what to expect and how I will migrate to 26.x as quickly as possible.
For a few more details regarding the new future you can look at the [roadmap to 26.x](https://itematic.errorcraft.net/articles/roadmap-to-26-x)!
# Changes
## Item Behaviour Components
### `minecraft:useable`
- Added an optional `effects` field.
- Its format is the same as the `minecraft:use_effects` data component.
- Provides the `minecraft:use_effects` data component.
### `minecraft:weapon`
- Replaced the `may_smash` field with more possibilities in the `types` field.
- Its value is a map with melee weapon types and values.
- See the Melee Weapons section for more information.
So if you had this:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 5.0,
"rules": []
},
"attack_speed": 0.15,
"may_smash": true
}
}
```
You now have to use this instead:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 5.0,
"rules": []
},
"attack_speed": 0.15,
"types": {
"minecraft:smashing": {}
}
}
}
```
Example from the Iron Spear:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 2.0,
"rules": []
},
"attack_range": {
"hitbox_margin": 0.125,
"max_creative_reach": 6.5,
"max_reach": 4.5,
"min_creative_reach": 2.0,
"min_reach": 2.0,
"mob_factor": 0.5
},
"attack_speed": 0.2631579041481018,
"damage_type": "minecraft:spear",
"minimum_attack_charge": 1.0,
"swing_animation": {
"type": "stab",
"duration": 19
},
"types": {
"minecraft:kinetic": {
"damage_conditions": {
"max_duration_ticks": 225,
"min_relative_speed": 4.6
},
"damage_multiplier": 0.95,
"delay_ticks": 12,
"dismount_conditions": {
"max_duration_ticks": 50,
"min_speed": 8.0
},
"forward_movement": 0.38,
"hit_sound": "minecraft:item.spear.hit",
"knockback_conditions": {
"max_duration_ticks": 135,
"min_speed": 5.1
},
"sound": "minecraft:item.spear.use"
},
"minecraft:piercing": {
"hit_sound": "minecraft:item.spear.hit",
"sound": "minecraft:item.spear.attack"
}
}
}
}
```
- Added an optional `attack_range` field.
- Determines the attack range and hitbox margin when trying to attack entities.
- Its format is the same as the `minecraft:attack_range` data component.
- Provides the `minecraft:attack_range` data component.
- Added an optional `damage_type` field.
- Specifies the damage type the weapon deals.
- Its format is an id pointing to a damage type.
- Provides the `minecraft:damage_type` data component.
- Added an optional `minimum_attack_charge` field.
- Specifies the minimum attack charge on the attack indicator required to attack with the weapon.
- Its format is a float ranging from 0 to 1 inclusive.
- Provides the `minecraft:minimum_attack_charge` data component.
- Added an optional `swing_animation` field.
- Allows a different animation to be used when attacking.
- Its format is the same as the `minecraft:swing_animation` data component.
- Provides the `minecraft:swing_animation` data component.
## Melee Weapons
Allows a melee weapon to be used in a specific way. Its value is a component map with melee weapon components.
### `minecraft:kinetic`
- Allows this weapon to have a charging attack when using the item.
- Its format is the same as the `minecraft:kinetic_weapon` data component.
Example:
```json
{
"minecraft:kinetic": {
"damage_conditions": {
"max_duration_ticks": 225,
"min_relative_speed": 4.6
},
"damage_multiplier": 0.95,
"delay_ticks": 12,
"dismount_conditions": {
"max_duration_ticks": 50,
"min_speed": 8.0
},
"forward_movement": 0.38,
"hit_sound": "minecraft:item.spear.hit",
"knockback_conditions": {
"max_duration_ticks": 135,
"min_speed": 5.1
},
"sound": "minecraft:item.spear.use"
}
}
```
### `minecraft:piercing`
- Allows this weapon to damage multiple entities along a ray instead of a single entity.
- Its format is the same as the `minecraft:piercing_weapon` data component.
Example:
```json
{
"minecraft:piercing": {
"hit_sound": "minecraft:item.spear.hit",
"sound": "minecraft:item.spear.attack"
}
}
```
### `minecraft:smashing`
- Allows this weapon to attack entities by falling on them.
- Its format is an empty map.
Example:
```json
{
"minecraft:smashing": {}
}
```
## Predicates
### Item Predicates
- Removed the `data_components` field in favour of vanilla's component predicates.
So if you had this:
```json
{
"data_components": [
"minecraft:bees"
]
}
```
You now have to use this instead:
```json
{
"predicates": {
"minecraft:bees": {}
}
}
```
# Fixes
- Skeleton-like entities can now use any direct shooter instead of just Bows.
- Piglins and Pillagers can now use any chargeable shooter instead of just Crossbows.
release
Itematic 0.6.0 for 1.21.5
0.6.0+1.21.530 июн. 2026 г.54Minecraft: 1.21.5fabric
Что нового
There's no version for 1.21.1 this time because I want to be up-to-date during 26.x updates before the end of the year (ergo before 27.1 happens).
This version overhauls the action context parameter system by using the vanilla context instead.
It also introduces entity spawn rules, unifies spawn-related fields in item behaviour components that involve placing entities and changes the way buckets are defined.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
However, expect a small update on this sooner or later.
# Changes
- Removed smithing templates.
- This only provided the tooltip and textures, of which the former has been extracted from the behaviour entirely.
## Items
- Removed `#minecraft:prevent_mining_in_creative`
- Its functionality is now part of `minecraft:tool`.
## Item Behaviour Components
- Replaced usages of entity initialisers with entity types directly.
- Removed the following item behaviour components:
- `minecraft:pointable`
- This should now be replicated with item assets in resource packs.
- Setting the item pointer location should now be replicated with actions instead.
- `minecraft:saddle`
- This has been replaced entirely by `minecraft:equipment`.
- `minecraft:tinted`
- This should now be replicated with item assets in resource packs.
- Renamed `minecraft:smithing_template` to `minecraft:smithing_template_provider`.
- It now only references the type, which was previously present in smithing templates.
- Now only determines the textures used in a Smithing Table.
- The tooltip is also no longer provided by the behaviour and must be placed in the item display instead.
So if you had this:
```json
{
"minecraft:smithing_template": {
"template": "minecraft:bolt_pattern"
}
}
```
You now have to use this:
```json
{
"minecraft:smithing_template_provider": "minecraft:trim_pattern"
}
```
### `minecraft:attack_blocking`
- Blocks attacks when used.
- The fields are the same as the `minecraft:blocks_attacks` data component.
Example:
```json
{
"minecraft:attack_blocking": {
"block_delay_seconds": 0.25,
"block_sound": "minecraft:item.shield.block",
"bypassed_by": "#minecraft:bypasses_shield",
"disabled_sound": "minecraft:item.shield.break",
"item_damage": {
"base": 1.0,
"factor": 1.0,
"threshold": 3.0
}
}
}
```
### `minecraft:bucket`
- Unified block and fluid placement for buckets.
- The `fluid`, `block` and `transforms_into` fields have been replaced with world modifications in the new `modification` field.
- This means that the previously hardcoded behaviour of the `minecraft:empty` fluid draining a fluid instead has been removed.
| Previously set field | World modification |
|-|-|
| Fluid `minecraft:empty` | `minecraft:drain_fluid` |
| Any other fluid | `minecraft:place_fluid` with the specified fluid |
| Any block | `minecraft:place_block` with the specified block |
- Moved the placed entity up a level by replacing it with an entity spawner.
- This means that the optional `require_other_successful_placement` field has been removed and now always requires a successful placement.
- The field itself is still optional.
So if you had this:
```json
{
"minecraft:bucket": {
"emptying_sound_event": "minecraft:item.bucket.empty_fish",
"entity": {
"entity": {
"type": "minecraft:pufferfish"
},
"require_other_successful_placement": true
},
"fluid": "minecraft:water",
"transforms_into": "minecraft:bucket"
}
}
```
You now have to use this:
```json
{
"minecraft:bucket": {
"entity": {
"entity": "minecraft:pufferfish"
},
"modification": {
"type": "minecraft:place_fluid",
"fluid": "minecraft:water",
"place_sound": "minecraft:item.bucket.empty_fish",
"transforms_into": "minecraft:bucket"
}
}
}
```
### `minecraft:entity`
- Merged the `entity` and `allow_item_data` fields into a single `entity` field by using an entity spawner.
- Added `allow_spawner_modification`.
- Its value is an optional boolean defaulting to `false`.
- Determines whether the item can modify a Spawner's entity type.
So if you had this:
```json
{
"minecraft:entity": {
"allow_item_data": true,
"entity": {
"type": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
}
```
You now have to use this:
```json
{
"minecraft:entity": {
"allow_spawner_modification": true,
"entity": {
"allow_item_data": true,
"entity": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
}
```
### `minecraft:playable`
- Renamed `instruments` to `default_instrument` and now only accepts one instrument.
### `minecraft:projectile`
- The `entity` field now only accepts an entity type instead of an entity initialiser by making the entire component an entity spawner.
- This means it also gains the other optional fields.
So if you had this:
```json
{
"minecraft:projectile": {
"entity": {
"type": "minecraft:trident"
}
}
}
```
You now have to use this instead:
```json
{
"minecraft:projectile": {
"entity": "minecraft:trident"
}
}
```
Example using data components:
```json
{
"minecraft:projectile": {
"components": {
"minecraft:chicken/variant": "minecraft:cold"
},
"entity": "minecraft:egg"
}
}
```
### `minecraft:spawn_egg`
- Is no longer required for Spawner entity type modification.
- This field has instead been moved to the `minecraft:entity` item behaviour component.
- The behaviour component is still used for spawning children when used on the specified entity type.
So if you had this:
```json
{
"minecraft:entity": {
"allow_item_data": true,
"entity": "minecraft:pig",
"passes": [
"block",
"fluid"
]
},
"minecraft:spawn_egg": {}
}
```
You now have to use this:
```json
{
"minecraft:entity": {
"allow_spawner_modification": true,
"entity": {
"allow_item_data": true,
"entity": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
},
"minecraft:spawn_egg": {}
}
```
### `minecraft:text_holder`
- Now opens a book on use directly instead of needing an action.
### `minecraft:trim_material_provider`
- Provides a trim material for use in recipes.
- Its value is an id pointing to a trim material.
- This value can be changed for individual item stacks in the new `minecraft:provides_trim_material` data component.
Example:
```json
{
"minecraft:trim_material_provider": "minecraft:diamond"
}
```
### `minecraft:weapon`
- Renamed the `damage_per_attack` field to `item_damage_per_attack`.
- Added the `disable_blocking_for_seconds` field.
- Disables blocking when used on a target wielding an item that is attack blocking.
- Its value is a non-negative float.
## Actions
- Removed action context parameters in favour of entity targets and new position targets.
- These values need to be updated accordingly.
- There is more information on this in the Entity Targets section below.
So if you had this:
```json
{
"type": "minecraft:play_sound",
"category": "neutral",
"pitch": 1.0,
"position": "this",
"sound": "minecraft:item.bottle.fill",
"volume": 1.0
}
```
You now have to use this instead:
```json
{
"type": "minecraft:play_sound",
"category": "neutral",
"pitch": 1.0,
"position": "origin",
"sound": "minecraft:item.bottle.fill",
"volume": 1.0
}
```
- Various actions gained fields for entity targets.
- Exchanging stacks now works in more places and in more contexts.
- Simplified action requirements to only take a predicate due to the migration towards context parameters.
So if you had this:
```json
{
"requirements": {
"conditions": {
"condition": "minecraft:location_check",
"predicate": {
"block": {
"blocks": "minecraft:respawn_anchor"
}
}
},
"context": {
"entity": "this",
"position": "target"
}
}
}
```
You now have to use this instead:
```json
{
"requirements": {
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:respawn_anchor"
}
}
}
}
```
- Removed the following actions:
- `minecraft:open_book_from_item`
- This is now part of the `minecraft:text_holder` item behaviour component.
- `minecraft:saddle_entity_at_position`
- This has been replaced by equipment and `minecraft:equip_entity_at_position` should be used instead.
- `minecraft:set_item_pointer_location`
- This has been moved to an item modifier.
### `minecraft:attach_leashed_entities_on_block`
- Added a new field called `position`:
- Its value is a position target and determines the position the leashed entities will be attached to.
### `minecraft:damage_item`
- Removed the `ignore_game_mode` field.
- The action now always takes the game mode into account.
### `minecraft:drop_item_from_block`
- Changed the `item` field to take an item stack instead of an item.
### `minecraft:exchange_item`
- Changed the `item` field to take an item stack instead of an item.
- Removed the `components` field.
- The components are now defined in the `item` field instead.
So if you had this:
```json
{
"type": "minecraft:exchange_item",
"components": {
"minecraft:potion_contents": {
"potion": "minecraft:water"
}
},
"item": "minecraft:potion"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:exchange_item",
"item": {
"id": "minecraft:potion",
"components": {
"minecraft:potion_contents": {
"potion": "minecraft:water"
}
},
"count": 1
}
}
```
### `minecraft:fertilize`
- Added a new field called `position`:
- Its value is a position target and determines the position to fertilize.
### `minecraft:modify_item`
- Removed the `context` field.
- The item modifier now uses the exact same context as the action.
- Added the `stack` field, which is an item stack target to use a specific item stack from the context.
### `minecraft:place_block`
- Removed the `decrement_count` field.
- This should be replaced by a sequence with a `minecraft:decrement_item` action.
So if you had this:
```json
{
"type": "minecraft:place_block",
"block": "minecraft:fire",
"decrement_count": true,
"position": "interacted"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:sequence",
"handler": "minecraft:passing",
"entries": [
{
"type": "minecraft:place_block",
"block": "minecraft:fire",
"position": "interacted"
},
{
"type": "minecraft:decrement_item",
"amount": 1
}
]
}
```
- Added an optional `place_sound` field.
- When specified, this sound will be played instead of the normal block place sound.
### `minecraft:prime_tnt`
- Does not prime tnt when the `tntExplodes` game rule is disabled.
- Turns any block into primed TNT now instead of just TNT.
- The block that is primed is used for the display.
- Checking for the TNT block must be done in the action requirements now.
So if you had this:
```json
{
"action": {
"type": "minecraft:prime_tnt",
"position": "target"
}
}
```
You now have to use this instead:
```json
{
"action": {
"type": "minecraft:prime_tnt",
"position": "interacted"
},
"requirements": {
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:tnt"
}
}
}
}
```
### `minecraft:run_function`
- Moved the `entity` and `position` fields up due to the removal of action context parameters.
So if you had this:
```json
{
"type": "minecraft:run_function",
"function": "example:function",
"context": {
"entity": "this",
"position": "this"
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:run_function",
"function": "example:function",
"entity": "this",
"position": "origin"
}
```
- Both fields are optional now and will never try to pass the parameter if not specified.
So if you only want the position context you can use this:
```json
{
"type": "minecraft:run_function",
"function": "example:function",
"position": "origin"
}
```
### `minecraft:sequence`
- Now no longer incorrectly reports duplicate actions defined in the same sequence as recursive.
### `minecraft:swing_hand`
- Added a new field called `entity`:
- Its value is an entity target and determines whose hand to swing.
## World Modifications
Can modify the world by adding or removing something from it.
### `minecraft:drain_fluid`
- Drains a fluid from the world.
- Has no additional fields.
- Leaves an item stack specified by the drained fluid.
### `minecraft:place_fluid`
- Places a fluid in the world.
- Fields:
- `fluid`: A fluid. The fluid to place.
- `place_sound`: A sound event. The sound to play when placed.
- `transforms_into`: An item. The item to leave when successfully placed.
- Leaves the item stack specified in the `transforms_into` field.
### `minecraft:place_block`
- Places a block in the world.
- Fields:
- `block`: A block picker. The block to place.
- `place_sound`: A sound event. The sound to play when placed.
- `transforms_into`: An item. The item to leave when successfully placed.
- Leaves the item stack specified in the `transforms_into` field.
## Entity Spawners
- Spawns an entity using the specified rules.
- Fields:
- `entity`: An entity type. The entity type to spawn.
- If `allow_item_data` is set to `true`, the entity type may additionally be determined via the `minecraft:entity_data` data component from the used item stack, which takes precedence over the `entity` field.
- `spawn_rules`: An optional list of spawn rules. The spawn rules to apply in the specified order.
- `components`: An optional set of components. The components to apply to the spawned entity.
- `spawn_sound`: An optional sound event. The sound to play when the entity is spawned.
- `allow_item_data`: An optional boolean defaulting to `false`. Whether to allow item data from the `minecraft:entity_data` data component from the used item stack.
## Entity Spawn Rules
- Determines whether to place the entity or not and if so, its position and rotation.
- Rules are applied when the condition passes or when no condition is specified.
- Common fields:
- `condition`: An optional predicate. Determines whether to apply the rule or not.
### `minecraft:align_yaw`
- Aligns the entity's yaw based on the placer's own yaw using the specified amount of steps.
- Fields:
- `step`: An integer ranging from 2 to 360. The amount of steps.
- For example, a value of 8 rounds to the nearest 45 degree as `360 / 8 = 45`.
Example:
```json
{
"type": "minecraft:align_yaw",
"steps": 8
}
```
### `minecraft:discard`
- Discards the entity entirely.
- Has no additional fields.
Example:
```json
{
"type": "minecraft:discard",
"condition": {
"condition": "minecraft:side_check",
"sides": [
"down"
]
}
}
```
### `minecraft:fits_in_volume`
- Checks whether the specified hitbox or otherwise entity's default hitbox fits in the specified volume.
- The hitbox to check for is centred around the entity spawner's current spawn position.
- Fields:
- `blocks`: An optional boolean. Defaults to `true`. Whether to check if the entity fits inside the surrounding blocks.
- `entities`: An optional boolean. Defaults to `true`. Whether to check if the entity fits inside the surrounding entities.
- `volume`: An optional list of three doubles. The volume to use instead of the entity's hitbox.
Example:
```json
{
"type": "minecraft:fits_in_volume",
"blocks": false,
"volume": [
1.0,
2.0,
1.0
]
}
```
### `minecraft:offset_spawn_position`
- Offsets the entity's spawn position by the specified amount.
- Fields:
- `offset`: A list of three doubles. The position offset.
```json
{
"type": "minecraft:offset_spawn_position",
"offset": [
0.0,
0.0625,
0.0
]
}
```
## Predicates
- Added a `minecraft:villager` entity sub-predicate, which is a temporary solution that will be removed once a component predicate for a Villager's type has been added (alongside data-driven trades as those will be part of vanilla by then)
- Fields:
- `variant`, which is a Villager variant, list of Villager variants or hash-prefixed Villager variant tag and the Villager's variant must match in order to pass.
Example:
```json
{
"type": "minecraft:villager",
"variant": [
"minecraft:swamp",
"minecraft:snow",
"minecraft:plains"
]
}
```
### `minecraft:location_check`
- Added a new optional field called `position`:
- Its value is a position target and is the position to retrieve to use for the check.
- Its default value is `"origin"` to match existing behaviour.
- Fails if the position defined is not present in the context.
Example:
```json
{
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:tnt"
}
}
}
```
## Item Modifiers
### `minecraft:set_item_pointer_location`
- Sets the `minecraft:lodestone_tracker` data component to the provided position.
- Fields:
- `position`, which is a position target to use as the item pointer location.
Example:
```json
{
"function": "minecraft:set_item_pointer_location",
"position": "interacted"
},
```
### `minecraft:split`
- Splits the item stack into the original and one with the provided count.
- Fields:
- `count`, which is a number provider to split the item stack into one with the provided new count.
Example:
```json
{
"count": 1.0,
"function": "minecraft:split"
}
```
## Context Parameters
Added the following context parameters from the migration:
- `minecraft:side`, which is the side of a block that was interacted with.
- Passed in the `minecraft:bucket` item behaviour.
- Passed in the `minecraft:entity` item behaviour.
- Used in dispense behaviour to interact with the Dispenser's facing direction.
- Used in the `minecraft:side_check` predicate.
- Used in the `minecraft:drop_item_from_block` action.
- Used in the `minecraft:fertilize` action.
- Used in the `minecraft:use_bucket` action.
- `minecraft:interacted_position`, which is the position that the user interacted with.
- Passed and used in various item behaviour.
- Used in dispense behaviour to interact with the Dispenser's output position.
- `minecraft:equipment_slot`, which is used when an item is broken.
- `minecraft:hand`, which is the hand used to execute an action.
- Passed to various item events when an item is being used.
- Used in the `minecraft:swing_hand` action to swing the hand.
- Used in the `minecraft:open_book_from_item` action to get the book from the executing entity.
- `minecraft:target_entity`, which is the entity that was interacted with.
- Used in the `minecraft:entity` and `minecraft:throwable` item behaviour for the spawned entities.
- Passed to the `minecraft:hit_entity` and `minecraft:use_weapon` item events for the attacked entity.
- Passed to the `minecraft:use_on_entity` item event for the interacted entity.
Action context parameters were replaced with new targets to be consistent with vanilla.
This means that all parameters are now passed to loot tables, item modifiers and predicates instead of having to select specific ones using action context parameters, which were removed as well.
This also means that you may need to update the value of certain fields.
All changes are visible below.
### Entity Targets
| Old | New | Context Parameter |
| - | - | - |
| `"this"` | `"this"` | `minecraft:this_entity` |
| `"target"` | `"target_entity"` | `minecraft:target_entity` |
So if you had this:
```json
{
"type": "minecraft:set_entity_name_from_item",
"entity": "target"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:set_entity_name_from_item",
"entity": "target_entity"
}
```
### Position Targets
| Old | New | Context Parameter |
| - | - | - |
| `"this"` | `"origin"` | `minecraft:origin` |
| `"target"` | `"interacted"` | `minecraft:interacted_position` |
So if you had this:
```json
{
"type": "minecraft:set_block_state",
"position": "target",
"state": {
"Name": "minecraft:farmland",
"Properties": {
"moisture": "0"
}
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:set_block_state",
"position": "interacted",
"state": {
"Name": "minecraft:farmland",
"Properties": {
"moisture": "0"
}
}
}
```
### Item Stack Targets
These are new and point to item stacks to use from the context.
Currently the only available value is `tool`, which points to the `minecraft:tool` context parameter.
## Trades
- Added an optional `merchant_predicate` field, which is a predicate that must pass in order for the trade to be considered of a merchant's trade set.
# Fixes
- The `minecraft:charge_type` property now works correctly again on item assets.
- Exchanging item stacks now works correctly again by dropping the exchanged item stack instead of the current item stack.
- Fixed the world modification type registry name.
beta
Itematic 0.6.0 Preview 3 for 1.21.5
0.6.0-preview.3+1.21.523 июн. 2026 г.36Minecraft: 1.21.5fabric
Что нового
This preview introduces entity spawn rules and unifies the spawn-related fields in item behaviour components that involve placing entities.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Item Behaviour Components
### `minecraft:bucket`
- Replaced the `entity` field with an entity spawner instead of just the entity type.
So if you had this:
```json
{
"minecraft:bucket": {
"entity": "minecraft:pufferfish",
"modification": {
"type": "minecraft:place_fluid",
"fluid": "minecraft:water",
"place_sound": "minecraft:item.bucket.empty_fish",
"transforms_into": "minecraft:bucket"
}
}
}
```
You now have to use this:
```json
{
"minecraft:bucket": {
"entity": {
"entity": "minecraft:pufferfish"
},
"modification": {
"type": "minecraft:place_fluid",
"fluid": "minecraft:water",
"place_sound": "minecraft:item.bucket.empty_fish",
"transforms_into": "minecraft:bucket"
}
}
}
```
### `minecraft:entity`
- Merged the `entity` and `allow_item_data` fields into a single `entity` field by using an entity spawner.
- Added `allow_spawner_modification`.
- Its value is an optional boolean defaulting to `false`.
- Determines whether the item can modify a Spawner's entity type.
So if you had this:
```json
{
"minecraft:entity": {
"allow_item_data": true,
"entity": "minecraft:pig",
"passes": [
"block",
"fluid"
]
}
}
```
You now have to use this:
```json
{
"minecraft:entity": {
"allow_spawner_modification": true,
"entity": {
"allow_item_data": true,
"entity": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
}
```
### `minecraft:projectile`
- Expanded the `entity` field by adding optional spawn rules, an optional spawn sound and whether to allow item data or not.
### `minecraft:spawn_egg`
- Is no longer required for Spawner entity type modification.
- This field has instead been moved to the `minecraft:entity` item behaviour component.
- The behaviour component is still used for spawning children when used on the specified entity type.
So if you had this:
```json
{
"minecraft:entity": {
"allow_item_data": true,
"entity": "minecraft:pig",
"passes": [
"block",
"fluid"
]
},
"minecraft:spawn_egg": {}
}
```
You now have to use this:
```json
{
"minecraft:entity": {
"allow_spawner_modification": true,
"entity": {
"allow_item_data": true,
"entity": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
},
"minecraft:spawn_egg": {}
}
```
## Entity Spawners
- Spawns an entity using the specified rules.
- Fields:
- `entity`: An entity type. The entity type to spawn.
- If `allow_item_data` is set to `true`, the entity type may additionally be determined via the `minecraft:entity_data` data component from the used item stack, which takes precedence over the `entity` field.
- `spawn_rules`: An optional list of spawn rules. The spawn rules to apply in the specified order.
- `components`: An optional set of components. The components to apply to the spawned entity.
- `spawn_sound`: An optional sound event. The sound to play when the entity is spawned.
- `allow_item_data`: An optional boolean defaulting to `false`. Whether to allow item data from the `minecraft:entity_data` data component from the used item stack.
## Entity Spawn Rules
- Determines whether to place the entity or not and if so, its position and rotation.
- Rules are applied when the condition passes or when no condition is specified.
- Common fields:
- `condition`: An optional predicate. Determines whether to apply the rule or not.
### `minecraft:align_yaw`
- Aligns the entity's yaw based on the placer's own yaw using the specified amount of steps.
- Fields:
- `step`: An integer ranging from 2 to 360. The amount of steps.
- For example, a value of 8 rounds to the nearest 45 degree as `360 / 8 = 45`.
Example:
```json
{
"type": "minecraft:align_yaw",
"steps": 8
}
```
### `minecraft:discard`
- Discards the entity entirely.
- Has no additional fields.
Example:
```json
{
"type": "minecraft:discard",
"condition": {
"condition": "minecraft:side_check",
"sides": [
"down"
]
}
}
```
### `minecraft:fits_in_volume`
- Checks whether the specified hitbox or otherwise entity's default hitbox fits in the specified volume.
- The hitbox to check for is centred around the entity spawner's current spawn position.
- Fields:
- `blocks`: An optional boolean. Defaults to `true`. Whether to check if the entity fits inside the surrounding blocks.
- `entities`: An optional boolean. Defaults to `true`. Whether to check if the entity fits inside the surrounding entities.
- `volume`: An optional list of three doubles. The volume to use instead of the entity's hitbox.
Example:
```json
{
"type": "minecraft:fits_in_volume",
"blocks": false,
"volume": [
1.0,
2.0,
1.0
]
}
```
### `minecraft:offset_spawn_position`
- Offsets the entity's spawn position by the specified amount.
- Fields:
- `offset`: A list of three doubles. The position offset.
```json
{
"type": "minecraft:offset_spawn_position",
"offset": [
0.0,
0.0625,
0.0
]
}
```
# Fixes
- Fixed the world modification type registry name.
beta
Itematic 0.6.0 Preview 2 for 1.21.5
0.6.0-preview.2+1.21.526 мая 2026 г.50Minecraft: 1.21.5fabric
Что нового
It's been a bit, but here's a new preview!
This preview changes the way buckets are defined with some minor action changes.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Item Behaviour Components
### `minecraft:bucket`
- Unified block and fluid placement for buckets.
- The `fluid`, `block` and `transforms_into` fields have been replaced with world modifications in the new `modification` field.
- This means that the previously hardcoded behaviour of the `minecraft:empty` fluid draining a fluid instead has been removed.
| Previously set field | World modification |
|-|-|
| Fluid `minecraft:empty` | `minecraft:drain_fluid` |
| Any other fluid | `minecraft:place_fluid` with the specified fluid |
| Any block | `minecraft:place_block` with the specified block |
- Moved the placed entity up a level by only specifying the entity type.
- This means that the optional `require_other_successful_placement` field has been removed and now always requires a successful placement.
- The field itself is still optional.
So if you had this:
```json
{
"minecraft:bucket": {
"emptying_sound_event": "minecraft:item.bucket.empty_fish",
"entity": {
"entity": "minecraft:pufferfish",
"require_other_successful_placement": true
},
"fluid": "minecraft:water",
"transforms_into": "minecraft:bucket"
}
}
```
You now have to use this instead:
```json
{
"minecraft:bucket": {
"entity": "minecraft:pufferfish",
"modification": {
"type": "minecraft:place_fluid",
"fluid": "minecraft:water",
"place_sound": "minecraft:item.bucket.empty_fish",
"transforms_into": "minecraft:bucket"
}
}
}
```
## Actions
### `minecraft:place_block`
- Removed the `decrement_count` field.
- This should be replaced by a sequence with a `minecraft:decrement_item` action.
So if you had this:
```json
{
"type": "minecraft:place_block",
"block": "minecraft:fire",
"decrement_count": true,
"position": "interacted"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:sequence",
"handler": "minecraft:passing",
"entries": [
{
"type": "minecraft:place_block",
"block": "minecraft:fire",
"position": "interacted"
},
{
"type": "minecraft:decrement_item",
"amount": 1
}
]
}
```
- Added an optional `place_sound` field.
- When specified, this sound will be played instead of the normal block place sound.
## World Modifications
Can modify the world by adding or removing something from it.
### `minecraft:drain_fluid`
- Drains a fluid from the world.
- Has no additional fields.
- Leaves an item stack specified by the drained fluid.
### `minecraft:place_fluid`
- Places a fluid in the world.
- Fields:
- `fluid`: A fluid. The fluid to place.
- `place_sound`: A sound event. The sound to play when placed.
- `transforms_into`: An item. The item to leave when successfully placed.
- Leaves the item stack specified in the `transforms_into` field.
### `minecraft:place_block`
- Places a block in the world.
- Fields:
- `block`: A block picker. The block to place.
- `place_sound`: A sound event. The sound to play when placed.
- `transforms_into`: An item. The item to leave when successfully placed.
- Leaves the item stack specified in the `transforms_into` field.
# Fixes
- Exchanging item stacks now works correctly again by dropping the exchanged item stack instead of the current item stack.
beta
Itematic 0.6.0 Preview 1 for 1.21.5
0.6.0-preview.1+1.21.514 апр. 2026 г.46Minecraft: 1.21.5fabric
Что нового
We're skipping an entire Minecraft drop and ended up on 1.21.5!
This preview overhauls the action context parameter system by using the vanilla context instead.
This version took a second because of some additional changes in Minecraft.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
- Removed smithing templates.
- This only provided the tooltip and textures, of which the former has been extracted from the behaviour entirely.
## Items
- Removed `#minecraft:prevent_mining_in_creative`
- Its functionality is now part of `minecraft:tool`.
## Item Behaviour Components
- Replaced usages of entity initialisers with entity types directly.
- Removed the following item behaviour components:
- `minecraft:pointable`
- This should now be replicated with item assets in resource packs.
- Setting the item pointer location should now be replicated with actions instead.
- `minecraft:saddle`
- This has been replaced entirely by `minecraft:equipment`.
- `minecraft:tinted`
- This should now be replicated with item assets in resource packs.
- Renamed `minecraft:smithing_template` to `minecraft:smithing_template_provider`.
- It now only references the type, which was previously present in smithing templates.
- Now only determines the textures used in a Smithing Table.
- The tooltip is also no longer provided by the behaviour and must be placed in the item display instead.
So if you had this:
```json
{
"minecraft:smithing_template": {
"template": "minecraft:bolt_pattern"
}
}
```
You now have to use this:
```json
{
"minecraft:smithing_template_provider": "minecraft:trim_pattern"
}
```
### `minecraft:attack_blocking`
- Blocks attacks when used.
- The fields are the same as the `minecraft:blocks_attacks` data component.
Example:
```json
{
"minecraft:attack_blocking": {
"block_delay_seconds": 0.25,
"block_sound": "minecraft:item.shield.block",
"bypassed_by": "#minecraft:bypasses_shield",
"disabled_sound": "minecraft:item.shield.break",
"item_damage": {
"base": 1.0,
"factor": 1.0,
"threshold": 3.0
}
}
}
```
### `minecraft:bucket`
- The entity target in the `entity` field now only accepts an entity type instead of an entity initialiser.
So if you had this:
```json
{
"minecraft:bucket": {
"emptying_sound_event": "minecraft:item.bucket.empty_fish",
"entity": {
"entity": {
"type": "minecraft:pufferfish"
},
"require_other_successful_placement": true
},
"fluid": "minecraft:water",
"transforms_into": "minecraft:bucket"
}
}
```
You now have to use this instead:
```json
{
"minecraft:bucket": {
"emptying_sound_event": "minecraft:item.bucket.empty_fish",
"entity": {
"entity": "minecraft:pufferfish",
"require_other_successful_placement": true
},
"fluid": "minecraft:water",
"transforms_into": "minecraft:bucket"
}
}
```
### `minecraft:entity`
- The `entity` field now only accepts an entity type instead of an entity initialiser.
So if you had this:
```json
{
"minecraft:entity": {
"entity": {
"type": "minecraft:oak_boat"
}
}
}
```
You now have to use this instead:
```json
{
"minecraft:entity": {
"entity": "minecraft:oak_boat"
}
}
```
### `minecraft:playable`
- Renamed `instruments` to `default_instrument` and now only accepts one instrument.
### `minecraft:projectile`
- The `entity` field now only accepts an entity type instead of an entity initialiser.
So if you had this:
```json
{
"minecraft:projectile": {
"entity": {
"type": "minecraft:trident"
}
}
}
```
You now have to use this instead:
```json
{
"minecraft:projectile": {
"entity": "minecraft:trident"
}
}
```
- Added an optional `components` field, which is a set of components to apply to the spawned entity.
Example:
```json
{
"minecraft:projectile": {
"components": {
"minecraft:chicken/variant": "minecraft:cold"
},
"entity": "minecraft:egg"
}
}
```
### `minecraft:text_holder`
- Now opens a book on use directly instead of needing an action.
### `minecraft:trim_material_provider`
- Provides a trim material for use in recipes.
- Its value is an id pointing to a trim material.
- This value can be changed for individual item stacks in the new `minecraft:provides_trim_material` data component.
Example:
```json
{
"minecraft:trim_material_provider": "minecraft:diamond"
}
```
### `minecraft:weapon`
- Renamed the `damage_per_attack` field to `item_damage_per_attack`.
- Added the `disable_blocking_for_seconds` field.
- Disables blocking when used on a target wielding an item that is attack blocking.
- Its value is a non-negative float.
## Actions
- Removed action context parameters in favour of entity targets and new position targets.
- These values need to be updated accordingly.
- There is more information on this in the Entity Targets section below.
So if you had this:
```json
{
"type": "minecraft:play_sound",
"category": "neutral",
"pitch": 1.0,
"position": "this",
"sound": "minecraft:item.bottle.fill",
"volume": 1.0
}
```
You now have to use this instead:
```json
{
"type": "minecraft:play_sound",
"category": "neutral",
"pitch": 1.0,
"position": "origin",
"sound": "minecraft:item.bottle.fill",
"volume": 1.0
}
```
- Various actions gained fields for entity targets.
- Exchanging stacks now works in more places and in more contexts.
- Simplified action requirements to only take a predicate due to the migration towards context parameters.
So if you had this:
```json
{
"requirements": {
"conditions": {
"condition": "minecraft:location_check",
"predicate": {
"block": {
"blocks": "minecraft:respawn_anchor"
}
}
},
"context": {
"entity": "this",
"position": "target"
}
}
}
```
You now have to use this instead:
```json
{
"requirements": {
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:respawn_anchor"
}
}
}
}
```
- Removed the following actions:
- `minecraft:open_book_from_item`
- This is now part of the `minecraft:text_holder` item behaviour component.
- `minecraft:saddle_entity_at_position`
- This has been replaced by equipment and `minecraft:equip_entity_at_position` should be used instead.
- `minecraft:set_item_pointer_location`
- This has been moved to an item modifier.
### `minecraft:attach_leashed_entities_on_block`
- Added a new field called `position`:
- Its value is a position target and determines the position the leashed entities will be attached to.
### `minecraft:damage_item`
- Removed the `ignore_game_mode` field.
- The action now always takes the game mode into account.
### `minecraft:drop_item_from_block`
- Changed the `item` field to take an item stack instead of an item.
### `minecraft:exchange_item`
- Changed the `item` field to take an item stack instead of an item.
- Removed the `components` field.
- The components are now defined in the `item` field instead.
So if you had this:
```json
{
"type": "minecraft:exchange_item",
"components": {
"minecraft:potion_contents": {
"potion": "minecraft:water"
}
},
"item": "minecraft:potion"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:exchange_item",
"item": {
"id": "minecraft:potion",
"components": {
"minecraft:potion_contents": {
"potion": "minecraft:water"
}
},
"count": 1
}
}
```
### `minecraft:fertilize`
- Added a new field called `position`:
- Its value is a position target and determines the position to fertilize.
### `minecraft:modify_item`
- Removed the `context` field.
- The item modifier now uses the exact same context as the action.
- Added the `stack` field, which is an item stack target to use a specific item stack from the context.
### `minecraft:prime_tnt`
- Does not prime tnt when the `tntExplodes` game rule is disabled.
- Turns any block into primed TNT now instead of just TNT.
- The block that is primed is used for the display.
- Checking for the TNT block must be done in the action requirements now.
So if you had this:
```json
{
"action": {
"type": "minecraft:prime_tnt",
"position": "target"
}
}
```
You now have to use this instead:
```json
{
"action": {
"type": "minecraft:prime_tnt",
"position": "interacted"
},
"requirements": {
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:tnt"
}
}
}
}
```
### `minecraft:run_function`
- Moved the `entity` and `position` fields up due to the removal of action context parameters.
So if you had this:
```json
{
"type": "minecraft:run_function",
"function": "example:function",
"context": {
"entity": "this",
"position": "this"
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:run_function",
"function": "example:function",
"entity": "this",
"position": "origin"
}
```
- Both fields are optional now and will never try to pass the parameter if not specified.
So if you only want the position context you can use this:
```json
{
"type": "minecraft:run_function",
"function": "example:function",
"position": "origin"
}
```
### `minecraft:sequence`
- Now no longer incorrectly reports duplicate actions defined in the same sequence as recursive.
### `minecraft:swing_hand`
- Added a new field called `entity`:
- Its value is an entity target and determines whose hand to swing.
## Predicates
- Added a `minecraft:villager` entity sub-predicate, which is a temporary solution that will be removed once a component predicate for a Villager's type has been added (alongside data-driven trades as those will be part of vanilla by then)
- Fields:
- `variant`, which is a Villager variant, list of Villager variants or hash-prefixed Villager variant tag and the Villager's variant must match in order to pass.
Example:
```json
{
"type": "minecraft:villager",
"variant": [
"minecraft:swamp",
"minecraft:snow",
"minecraft:plains"
]
}
```
### `minecraft:location_check`
- Added a new optional field called `position`:
- Its value is a position target and is the position to retrieve to use for the check.
- Its default value is `"origin"` to match existing behaviour.
- Fails if the position defined is not present in the context.
Example:
```json
{
"condition": "minecraft:location_check",
"position": "interacted",
"predicate": {
"block": {
"blocks": "minecraft:tnt"
}
}
}
```
## Item Modifiers
### `minecraft:set_item_pointer_location`
- Sets the `minecraft:lodestone_tracker` data component to the provided position.
- Fields:
- `position`, which is a position target to use as the item pointer location.
Example:
```json
{
"function": "minecraft:set_item_pointer_location",
"position": "interacted"
},
```
### `minecraft:split`
- Splits the item stack into the original and one with the provided count.
- Fields:
- `count`, which is a number provider to split the item stack into one with the provided new count.
Example:
```json
{
"count": 1.0,
"function": "minecraft:split"
}
```
## Context Parameters
Added the following context parameters from the migration:
- `minecraft:side`, which is the side of a block that was interacted with.
- Passed in the `minecraft:bucket` item behaviour.
- Passed in the `minecraft:entity` item behaviour.
- Used in dispense behaviour to interact with the Dispenser's facing direction.
- Used in the `minecraft:side_check` predicate.
- Used in the `minecraft:drop_item_from_block` action.
- Used in the `minecraft:fertilize` action.
- Used in the `minecraft:use_bucket` action.
- `minecraft:interacted_position`, which is the position that the user interacted with.
- Passed and used in various item behaviour.
- Used in dispense behaviour to interact with the Dispenser's output position.
- `minecraft:equipment_slot`, which is used when an item is broken.
- `minecraft:hand`, which is the hand used to execute an action.
- Passed to various item events when an item is being used.
- Used in the `minecraft:swing_hand` action to swing the hand.
- Used in the `minecraft:open_book_from_item` action to get the book from the executing entity.
- `minecraft:target_entity`, which is the entity that was interacted with.
- Used in the `minecraft:entity` and `minecraft:throwable` item behaviour for the spawned entities.
- Passed to the `minecraft:hit_entity` and `minecraft:use_weapon` item events for the attacked entity.
- Passed to the `minecraft:use_on_entity` item event for the interacted entity.
Action context parameters were replaced with new targets to be consistent with vanilla.
This means that all parameters are now passed to loot tables, item modifiers and predicates instead of having to select specific ones using action context parameters, which were removed as well.
This also means that you may need to update the value of certain fields.
All changes are visible below.
### Entity Targets
| Old | New | Context Parameter |
| - | - | - |
| `"this"` | `"this"` | `minecraft:this_entity` |
| `"target"` | `"target_entity"` | `minecraft:target_entity` |
So if you had this:
```json
{
"type": "minecraft:set_entity_name_from_item",
"entity": "target"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:set_entity_name_from_item",
"entity": "target_entity"
}
```
### Position Targets
| Old | New | Context Parameter |
| - | - | - |
| `"this"` | `"origin"` | `minecraft:origin` |
| `"target"` | `"interacted"` | `minecraft:interacted_position` |
So if you had this:
```json
{
"type": "minecraft:set_block_state",
"position": "target",
"state": {
"Name": "minecraft:farmland",
"Properties": {
"moisture": "0"
}
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:set_block_state",
"position": "interacted",
"state": {
"Name": "minecraft:farmland",
"Properties": {
"moisture": "0"
}
}
}
```
### Item Stack Targets
These are new and point to item stacks to use from the context.
Currently the only available value is `tool`, which points to the `minecraft:tool` context parameter.
## Trades
- Added an optional `merchant_predicate` field, which is a predicate that must pass in order for the trade to be considered of a merchant's trade set.
# Fixes
- The `minecraft:charge_type` property now works correctly again on item assets.
release
Itematic 0.5.0 for 1.21.3
0.5.0+1.21.310 мар. 2026 г.49Minecraft: 1.21.2, 1.21.3fabric
Что нового
This version has a big change for 1.21.3 by renaming the root fields for items.
It also moves crafting remainders to recipes and adds brewing recipes.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!

# Changes
- Removed armour materials entirely.
- Its values are now inlined in the `minecraft:armor` item behaviour component instead.
## Assets
- Added four textures for the Brewing Stand recipe book filter button.
- Added four textures for the Brewing Stand recipe book alternatives overlay.
## Items
- Renamed the `base` field to `display`.
- It only contains data related to the item's display.
- Renamed the `components` field to `behavior`.
- It only contains (or should only contain) item behaviour. Everything else must be moved elsewhere.
These two changes have been made due to a new required field in the item display, which already breaks all existing item definitions.
- Added the optional `attribute_modifiers` field to the item.
- Its value is the same as the list form of the `minecraft:attribute_modifiers` data component.
- Added the `model` field to the item display.
- Its value is an id referencing an item model in a resource pack.
- This value can be changed for individual item stacks in the `minecraft:item_model` data component.
So if you had this:
```json
{
"base": {
"translation_key": "item.minecraft.stick"
},
"components": {
"minecraft:fuel": {
"ticks": 100
},
"minecraft:stackable": 64
}
}
```
You now have to use this instead:
```json
{
"display": {
"translation_key": "item.minecraft.stick",
"model": "minecraft:stick"
},
"behavior": {
"minecraft:fuel": {
"ticks": 100
},
"minecraft:stackable": 64
}
}
```
- Added the optional `tooltip_style` field to the item display.
- Its value is an id referencing a texture in a resource pack.
- This value can be changed for individual item stacks in the `minecraft:tooltip_style` data component.
- Added the `minecraft:before_death_holder` item event.
- Added new item tags:
- `#minecraft:brewing_inputs`, which is used for the accepted items for the Brewing Stand input slots.
- `#minecraft:mundane_potion_reagents`, which is used to convert Water Bottles to Mundane Potions in a brewing recipe.
## Item Behaviour Components
- Added the following item behaviour components:
- `minecraft:glider`
- Removed the following item behaviour components:
- `minecraft:attribute_modifiers`
- This has been replaced with the `attribute_modifiers` field on the item and entries should be moved there.
So if you had this:
```json
{
"behavior": {
"minecraft:attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
}
```
You now have to use this instead:
```json
{
"attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
```
- `minecraft:armor`
- This has been replaced with the `attribute_modifiers` field on the item and entries should be moved there.
So if you had this:
```json
{
"behavior": {
"minecraft:armor": {
"attribute_id": "minecraft:armor.chestplate",
"defense": 8,
"knockback_resistance": 0.0,
"toughness": 2.0
}
}
}
```
You now have to use this instead:
```json
{
"attribute_modifiers": [
{
"id": "minecraft:armor.chestplate",
"type": "minecraft:armor",
"amount": 8.0,
"operation": "add_value",
"slot": "chest"
},
{
"id": "minecraft:armor.chestplate",
"type": "minecraft:armor_toughness",
"amount": 2.0,
"operation": "add_value",
"slot": "chest"
}
]
}
```
- `minecraft:life_saving`
- This has been replaced with the new `minecraft:before_death_holder` item event.
- To replicate the previous behaviour, the `minecraft:clear_status_effects` and `minecraft:add_status_effects` actions can be used.
- Note that this means that the `minecraft:death_protection` data component is unused as a result.
- The reason this was moved to an item event is to support the newly added 'consume effects' from the `minecraft:death_protection` data component from vanilla in 1.21.3, which the action system accommodates for with even more possibilities.
- `minecraft:recipe_remainder`
- This has been replaced by remainders in recipe ingredients directly and the new remainder field in the minecraft:fuel item behaviour component.
- `minecraft:useable_on_fluid`
- This has been replaced in favour of passes in their respective behaviour components.
### `minecraft:consumable`
- Moved the `result_item` field to `remainder` in `minecraft:useable`.
### `minecraft:cooldown`
- Added an optional `group` field, which is the id to use as the cooldown group. If not specified, it will use the item id
### `minecraft:entity`
- Added an optional `passes` field, which is a list of strings that allows its user to place an entity given a certain context.
- `block`: Allows the user to place the entity on a block.
- `fluid`: Allows the user to place the entity on a fluid.
- Its default value is `["block"]`.
Example:
```json
{
"allow_item_data": true,
"entity": {
"type": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
```
### `minecraft:equipment`
- Updated to match the `minecraft:equippable` data component.
- Note that the `dispensable` field is unused as it has been replaced by the `minecraft:dispensable` item behaviour.
### `minecraft:food`
- Removed the `effects` field.
- This should now be applied with the `minecraft:consume_item` or `minecraft:eat_item` item event combined with predicates and the new `minecraft:add_status_effects` action.
So if you had this:
```json
{
"components": {
"minecraft:food": {
"effects": [
{
"effect": {
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
},
"probability": 0.8
}
],
"nutrition": 4,
"saturation": 0.8
}
}
}
```
You now have to use this instead:
```json
{
"components": {
"minecraft:food": {
"nutrition": 4,
"saturation": 0.8
}
},
"events": {
"minecraft:consume_item": {
"action": {
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
}
],
"entity": "this"
},
"requirements": {
"conditions": {
"chance": 0.8,
"condition": "minecraft:random_chance"
},
"context": {
"entity": "this",
"position": "this"
}
}
}
}
}
```
### `minecraft:fuel`
- Added an optional `remainder` field, which is the item stack to leave when used as a fuel.
- This replaces the `minecraft:recipe_remainder` item behaviour that was used previously for this.
Example:
```json
{
"remainder": {
"id": "minecraft:bucket",
"count": 1
},
"ticks": 20000
}
```
### `minecraft:glider`
- Allows its user to glide in the air and use Firework Rockets to boost themselves forwards.
- Fields:
- `useable_if`: An optional item predicate. Checks whether its user can use the glider. If not specified, the user can always use the glider.
### `minecraft:useable`
- Added an optional `remainder` field, which is the item stack to leave when finished using, whether instantaneous or over a specified duration.
Example:
```json
{
"animation": "eat",
"remainder": {
"id": "minecraft:bowl",
"count": 1
},
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
- Changed the way the use duration in the `ticks` field works:
- If not specified, the item will be used instantly instead of being used indefinitely.
- To reproduce the previous behaviour, use the new `minecraft:indefinite` use duration provider.
- This makes the field in the behaviour component the same as the data component in all cases.
- A positive integer can still be used as a direct usage of `minecraft:constant`.
So if you had this:
```json
{
"minecraft:useable": {
"animation": "block"
}
}
```
You now have to use this instead:
```json
{
"minecraft:useable": {
"animation": "block",
"ticks": {
"type": "minecraft:indefinite"
}
}
}
```
## Data Components
- Removed the following data components:
- `minecraft:immune_to_damage`
- This has been replaced by `minecraft:damage_resistant` from vanilla.
- Entries are datafixed properly.
- Made the following data components unused:
- `minecraft:death_protection`
- This has been replaced by the `minecraft:before_death_holder` item event to accommodate more actions.
- The reason the data component itself still exists is to not break existing worlds.
### `minecraft:equippable`
- No longer uses the `dispensable` field as it has been replaced by the `minecraft:dispensable` item behaviour.
### `minecraft:glider`
- Now has an optional `useable_if` field, which is an item predicate to check whether its user can use the glider.
- If not specified, the user can always use the glider.
### `minecraft:use_duration`
- You now no longer specify a `ticks` field, making it consistent with the way it is used in the `minecraft:useable` behaviour.
So if you had this:
```json
{
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:constant",
"amount": 32
}
```
- You can no longer specify an empty map to specify an indefinite use duration and you must use the `minecraft:indefinite` use duration provider instead.
So if you had this:
```json
{}
```
You must now use this:
```json
{
"type": "minecraft:indefinite"
}
```
- A positive integer can still be used as a direct usage of the `minecraft:constant` use duration provider.
### `minecraft:weapon_attack_damage`
- When determining whether to add the base `minecraft:attack_damage` attribute or not, it now defaults to `true` instead of `false` and must be explicitly set by `rules` accordingly.
## Use Durations
- Added the following use durations:
- `minecraft:indefinite`
### `minecraft:indefinite`
- Always uses the item indefinitely.
- Has no additional fields.
## Actions
- Added the following actions:
- `minecraft:add_status_effects`
### `minecraft:add_status_effects`
- Adds status effects to an entity.
- The action is unsuccessful if the entity does not exist, is not a living entity or if no effect is added.
- Fields:
- `effects`: A list of status effects. The effects to apply to the entity.
- `entity`: An action context parameter. The entity to target.
Example:
```json
{
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:regeneration",
"amplifier": 1,
"duration": 100,
"show_icon": true
},
{
"id": "minecraft:absorption",
"duration": 2400,
"show_icon": true
}
],
"entity": "this"
}
```
## Entity Initialisers
- Removed the `variant` field from `minecraft:boat` as its variant has been split up into separate entity types.
So if you had this:
```json
{
"type": "minecraft:boat",
"variant": "minecraft:oak"
}
```
You must now use this instead:
```json
{
"type": "minecraft:oak_boat"
}
```
- Removed the `prevent_spawn_from_riptide` field from `minecraft:trident`.
## Recipes
- Added the following recipe types:
- `minecraft:brewing_amplify`
- `minecraft:brewing_modify`
- Removed the following recipe types:
- `minecraft:item_coloring`
- This has been replaced by `minecraft:crafting_transmute` from vanilla.
- Added remainders to ingredients.
- Replaces the `minecraft:recipe_remainder` item behaviour component.
- The existing format still works.
- Currently only in use for shaped and shapeless recipes.
- Fields:
- `items`: An item, list of items or hash-prefixed item tag. The items to allow for this ingredient.
- `remainder`: An optional item stack. The item stack to leave when the ingredient is consumed.
Example:
```json
{
"items": "minecraft:milk_bucket",
"remainder": {
"id": "minecraft:bucket",
"count": 1
}
}
```
### `minecraft:brewing_amplify`
- Transforms the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: An item. The item to transform.
- `reagent`: An ingredient. The items to accept to modify the item.
- `result`: An item. The item to transform into.
- `brewing_time`: An optional positive integer. The number of ticks the recipe takes to complete.
- Its default value is `400`.
- A remainder may be specified for the reagent that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_amplify",
"reagent": {
"items": "minecraft:dragon_breath",
"remainder": {
"id": "minecraft:glass_bottle",
"count": 1
}
},
"base": "minecraft:splash_potion",
"result": "minecraft:lingering_potion"
}
```
### `minecraft:brewing_modify`
- Changes the potion present on the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: A potion. The potion to modify.
- `reagent`: An ingredient. The items to accept to modify the potion.
- `result`: A potion. The potion to leave.
- A remainder may be specified for the reagent that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_modify",
"reagent": "minecraft:sugar",
"base": "minecraft:awkward",
"result": "minecraft:swiftness"
}
```
## Colour Providers
- Added the following colour provider types:
- `minecraft:first_to_pass_condition`
### `minecraft:first_to_pass_condition`
- Uses the first colour provider whose condition passes or uses the fallback otherwise.
- Fields:
- `entries`: A non-empty list of colour providers. The colours to pick from depending on their conditions.
- `fallback`: The fallback colour provider to use when all entries fail.
- Entry fields:
- `color`: A colour provider.
- `condition`: An entry condition. The condition that needs to pass in order to use this colour provider.
- Entry condition fields:
- `progress`: A number range that checks for the progress.
Example:
```json
{
"type": "minecraft:first_to_pass_condition",
"entries": [
{
"color": {
"type": "minecraft:constant",
"color": -43948
},
"condition": {
"progress": 1.0
}
}
],
"fallback": {
"type": "minecraft:constant",
"color": -9402369
}
}
```
release
Itematic 0.5.0 for 1.21.1
0.5.0+1.21.110 мар. 2026 г.126Minecraft: 1.21, 1.21.1fabric
Что нового
This version moves crafting remainders to recipes and adds brewing recipes.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!

# Changes
## Assets
- Added four textures for the Brewing Stand recipe book filter button.
- Added four textures for the Brewing Stand recipe book alternatives overlay.
## Items
- Added the optional `attribute_modifiers` field to the item.
- Its value is the same as the list form of the `minecraft:attribute_modifiers` data component.
- Added the `minecraft:before_death_holder` item event.
- Added new item tags:
- `#minecraft:brewing_inputs`, which is used for the accepted items for the Brewing Stand input slots.
- `#minecraft:mundane_potion_reagents`, which is used to convert Water Bottles to Mundane Potions in a brewing recipe.
## Item Behaviour Components
- Removed the following item behaviour components:
- `minecraft:attribute_modifiers`
- This has been replaced with the `attribute_modifiers` field on the item and entries should be moved there.
So if you had this:
```json
{
"behavior": {
"minecraft:attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
}
```
You now have to use this instead:
```json
{
"attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
```
- `minecraft:life_saving`
- This has been replaced with the new `minecraft:before_death_holder` item event.
- To replicate the previous behaviour, the `minecraft:clear_status_effects` and `minecraft:add_status_effects` actions can be used.
- Note that this means that the `minecraft:death_protection` data component is unused as a result.
- The reason this was moved to an item event is to support the newly added 'consume effects' from the `minecraft:death_protection` data component from vanilla in 1.21.3, which the action system accommodates for with even more possibilities.
- `minecraft:recipe_remainder`
- This has been replaced by remainders in recipe ingredients directly and the new remainder field in the minecraft:fuel item behaviour component.
- `minecraft:useable_on_fluid`
- This has been replaced in favour of passes in their respective behaviour components.
### `minecraft:consumable`
- Moved the `result_item` field to `remainder` in `minecraft:useable`.
### `minecraft:entity`
- Added an optional `passes` field, which is a list of strings that allows its user to place an entity given a certain context.
- `block`: Allows the user to place the entity on a block.
- `fluid`: Allows the user to place the entity on a fluid.
- Its default value is `["block"]`.
Example:
```json
{
"allow_item_data": true,
"entity": {
"type": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
```
### `minecraft:food`
- Removed the `effects` field.
- This should now be applied with the `minecraft:consume_item` or `minecraft:eat_item` item event combined with predicates and the new `minecraft:add_status_effects` action.
So if you had this:
```json
{
"components": {
"minecraft:food": {
"effects": [
{
"effect": {
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
},
"probability": 0.8
}
],
"nutrition": 4,
"saturation": 0.8
}
}
}
```
You now have to use this instead:
```json
{
"components": {
"minecraft:food": {
"nutrition": 4,
"saturation": 0.8
}
},
"events": {
"minecraft:consume_item": {
"action": {
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
}
],
"entity": "this"
},
"requirements": {
"conditions": {
"chance": 0.8,
"condition": "minecraft:random_chance"
},
"context": {
"entity": "this",
"position": "this"
}
}
}
}
}
```
### `minecraft:fuel`
- Added an optional `remainder` field, which is the item stack to leave when used as a fuel.
- This replaces the `minecraft:recipe_remainder` item behaviour that was used previously for this.
Example:
```json
{
"remainder": {
"id": "minecraft:bucket",
"count": 1
},
"ticks": 20000
}
```
### `minecraft:useable`
- Added an optional `remainder` field, which is the item stack to leave when finished using, whether instantaneous or over a specified duration.
Example:
```json
{
"animation": "eat",
"remainder": {
"id": "minecraft:bowl",
"count": 1
},
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
- Changed the way the use duration in the `ticks` field works:
- If not specified, the item will be used instantly instead of being used indefinitely.
- To reproduce the previous behaviour, use the new `minecraft:indefinite` use duration provider.
- This makes the field in the behaviour component the same as the data component in all cases.
- A positive integer can still be used as a direct usage of `minecraft:constant`.
So if you had this:
```json
{
"minecraft:useable": {
"animation": "block"
}
}
```
You now have to use this instead:
```json
{
"minecraft:useable": {
"animation": "block",
"ticks": {
"type": "minecraft:indefinite"
}
}
}
```
## Data Components
- Removed the following data components:
- `minecraft:immune_to_damage`
- This has been replaced by `minecraft:damage_resistant` from vanilla.
- Entries are datafixed properly.
### `minecraft:use_duration`
- You now no longer specify a `ticks` field, making it consistent with the way it is used in the `minecraft:useable` behaviour.
So if you had this:
```json
{
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:constant",
"amount": 32
}
```
- You can no longer specify an empty map to specify an indefinite use duration and you must use the `minecraft:indefinite` use duration provider instead.
So if you had this:
```json
{}
```
You must now use this:
```json
{
"type": "minecraft:indefinite"
}
```
- A positive integer can still be used as a direct usage of the `minecraft:constant` use duration provider.
### `minecraft:weapon_attack_damage`
- When determining whether to add the base `minecraft:attack_damage` attribute or not, it now defaults to `true` instead of `false` and must be explicitly set by `rules` accordingly.
## Use Durations
- Added the following use durations:
- `minecraft:indefinite`
### `minecraft:indefinite`
- Always uses the item indefinitely.
- Has no additional fields.
## Actions
- Added the following actions:
- `minecraft:add_status_effects`
### `minecraft:add_status_effects`
- Adds status effects to an entity.
- The action is unsuccessful if the entity does not exist, is not a living entity or if no effect is added.
- Fields:
- `effects`: A list of status effects. The effects to apply to the entity.
- `entity`: An action context parameter. The entity to target.
Example:
```json
{
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:regeneration",
"amplifier": 1,
"duration": 100,
"show_icon": true
},
{
"id": "minecraft:absorption",
"duration": 2400,
"show_icon": true
}
],
"entity": "this"
}
```
## Recipes
- Added the following recipe types:
- `minecraft:brewing_amplify`
- `minecraft:brewing_modify`
- Added remainders to ingredients.
- Replaces the `minecraft:recipe_remainder` item behaviour component.
- The existing format still works.
- Currently only in use for shaped and shapeless recipes.
- Fields:
- `items`: An ingredient entry or list of ingredient entries.
- `remainder`: An optional item stack. The item stack to leave when the ingredient is consumed.
Example:
```json
{
"items": {
"item": "minecraft:milk_bucket"
},
"remainder": {
"id": "minecraft:bucket",
"count": 1
}
}
```
### `minecraft:brewing_amplify`
- Transforms the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: An item. The item to transform.
- `reagent`: An ingredient. The items to accept to modify the item.
- `result`: An item. The item to transform into.
- `brewing_time`: An optional positive integer. The number of ticks the recipe takes to complete.
- Its default value is `400`.
- A remainder may be specified for the reagent that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_amplify",
"reagent": {
"items": {
"item": "minecraft:dragon_breath"
},
"remainder": {
"id": "minecraft:glass_bottle",
"count": 1
}
},
"base": "minecraft:splash_potion",
"result": "minecraft:lingering_potion"
}
```
### `minecraft:brewing_modify`
- Changes the potion present on the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: A potion. The potion to modify.
- `reagent`: An ingredient. The items to accept to modify the potion.
- `result`: A potion. The potion to leave.
- A remainder may be specified for the reagent that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_modify",
"reagent": {
"item": "minecraft:sugar"
},
"base": "minecraft:awkward",
"result": "minecraft:swiftness"
}
```
beta
Itematic 0.5.0 Preview 3 for 1.21.3
0.5.0-preview.3+1.21.34 мар. 2026 г.28Minecraft: 1.21.2, 1.21.3fabric
Что нового
This preview version adds an optional duration field to brewing recipes and previews for recipe alternatives.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Assets
- Added four textures for the Brewing Stand recipe book alternatives overlay.
## Items
- Renamed the `#minecraft:mundane_potion_additions` item tag to `#minecraft:mundane_potion_reagents`.
## Recipes
- Renamed the `addition` field to `reagent` for brewing recipes.
So if you had this:
```json
{
"type": "minecraft:brewing_modify",
"addition": "minecraft:sugar",
"base": "minecraft:awkward",
"result": "minecraft:swiftness"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:brewing_modify",
"base": "minecraft:awkward",
"reagent": "minecraft:sugar",
"result": "minecraft:swiftness"
}
```
- Added an optional `brewing_duration` field to brewing recipes, which is a positive integer representing the number of ticks the recipe takes to complete.
- Its default value is `400`.
Example:
```json
{
"type": "minecraft:brewing_modify",
"base": "minecraft:awkward",
"reagent": "minecraft:sugar",
"result": "minecraft:swiftness",
"brewing_time": 200
}
```
beta
Itematic 0.5.0 Preview 3 for 1.21.1
0.5.0-preview.3+1.21.14 мар. 2026 г.26Minecraft: 1.21, 1.21.1fabric
Что нового
This preview version adds an optional duration field to brewing recipes and previews for recipe alternatives.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Assets
- Added four textures for the Brewing Stand recipe book alternatives overlay.
## Items
- Renamed the `#minecraft:mundane_potion_additions` item tag to `#minecraft:mundane_potion_reagents`.
## Recipes
- Renamed the `addition` field to `reagent` for brewing recipes.
So if you had this:
```json
{
"type": "minecraft:brewing_modify",
"addition": "minecraft:sugar",
"base": "minecraft:awkward",
"result": "minecraft:swiftness"
}
```
You now have to use this instead:
```json
{
"type": "minecraft:brewing_modify",
"base": "minecraft:awkward",
"reagent": "minecraft:sugar",
"result": "minecraft:swiftness"
}
```
- Added an optional `brewing_duration` field to brewing recipes, which is a positive integer representing the number of ticks the recipe takes to complete.
- Its default value is `400`.
Example:
```json
{
"type": "minecraft:brewing_modify",
"base": "minecraft:awkward",
"reagent": "minecraft:sugar",
"result": "minecraft:swiftness",
"brewing_time": 200
}
```
beta
Itematic 0.5.0 Preview 2 for 1.21.3
0.5.0-preview.2+1.21.327 февр. 2026 г.31Minecraft: 1.21.2, 1.21.3fabric
Что нового
This preview version adds data-driven brewing recipes with a recipe book and moves attribute modifiers on items outside of the item behaviour.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!

# Changes
## Assets
- Added four textures for the Brewing Stand recipe book filter button.
## Items
- Added new item tags:
- `#minecraft:brewing_inputs`, which is used for the accepted items for the Brewing Stand input slots.
- `#minecraft:mundane_potion_additions`, which is used to convert Water Bottles to Mundane Potions in a brewing recipe.
- Added an optional `attribute_modifiers` field to the item.
- Its value is the same as the list form of the `minecraft:attribute_modifiers` data component.
## Item Behaviour Components
- Removed `minecraft:attribute_modifiers`.
- Entries should be moved to the `attribute_modifiers` field on the item.
So if you had this:
```json
{
"behavior": {
"minecraft:attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
}
```
You now have to use this instead:
```json
{
"attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
```
- Removed `minecraft:armor`.
- Entries should be moved to the `attribute_modifiers` field on the item.
So if you had this:
```json
{
"behavior": {
"minecraft:armor": {
"attribute_id": "minecraft:armor.chestplate",
"defense": 8,
"knockback_resistance": 0.0,
"toughness": 2.0
}
}
}
```
You now have to use this instead:
```json
{
"attribute_modifiers": [
{
"id": "minecraft:armor.chestplate",
"type": "minecraft:armor",
"amount": 8.0,
"operation": "add_value",
"slot": "chest"
},
{
"id": "minecraft:armor.chestplate",
"type": "minecraft:armor_toughness",
"amount": 2.0,
"operation": "add_value",
"slot": "chest"
}
]
}
```
## Recipes
Added the following recipe types:
- `minecraft:brewing_amplify`
- `minecraft:brewing_modify`
### `minecraft:brewing_amplify`
- Transforms the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: An item. The item to transform.
- `addition`: An ingredient. The items to accept to modify the item.
- `result`: An item. The item to transform into.
- A remainder may be specified for the addition that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_amplify",
"addition": {
"items": "minecraft:dragon_breath",
"remainder": {
"id": "minecraft:glass_bottle",
"count": 1
}
},
"base": "minecraft:splash_potion",
"result": "minecraft:lingering_potion"
}
```
### `minecraft:brewing_modify`
- Changes the potion present on the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: A potion. The potion to modify.
- `addition`: An ingredient. The items to accept to modify the potion.
- `result`: A potion. The potion to leave.
- A remainder may be specified for the addition that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_modify",
"addition": "minecraft:sugar",
"base": "minecraft:awkward",
"result": "minecraft:swiftness"
}
```
beta
Itematic 0.5.0 Preview 2 for 1.21.1
0.5.0-preview.2+1.21.127 февр. 2026 г.33Minecraft: 1.21, 1.21.1fabric
Что нового
This preview version adds data-driven brewing recipes with a recipe book and moves attribute modifiers on items outside of the item behaviour.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!

# Changes
## Assets
- Added four textures for the Brewing Stand recipe book filter button.
## Items
- Added new item tags:
- `#minecraft:brewing_inputs`, which is used for the accepted items for the Brewing Stand input slots.
- `#minecraft:mundane_potion_additions`, which is used to convert Water Bottles to Mundane Potions in a brewing recipe.
- Added an optional `attribute_modifiers` field to the item.
- Its value is the same as the list form of the `minecraft:attribute_modifiers` data component.
## Item Behaviour Components
- Removed `minecraft:attribute_modifiers`.
- Entries should be moved to the `attribute_modifiers` field on the item.
So if you had this:
```json
{
"behavior": {
"minecraft:attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
}
```
You now have to use this instead:
```json
{
"attribute_modifiers": [
{
"id": "example:tool.heavy",
"type": "minecraft:gravity",
"amount": 0.01,
"operation": "add_value",
"slot": "hand"
}
]
}
```
## Recipes
Added the following recipe types:
- `minecraft:brewing_amplify`
- `minecraft:brewing_modify`
### `minecraft:brewing_amplify`
- Transforms the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: An item. The item to transform.
- `addition`: An ingredient. The items to accept to modify the item.
- `result`: An item. The item to transform into.
- A remainder may be specified for the addition that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_amplify",
"addition": {
"items": {
"item": "minecraft:dragon_breath"
},
"remainder": {
"id": "minecraft:glass_bottle",
"count": 1
}
},
"base": "minecraft:splash_potion",
"result": "minecraft:lingering_potion"
}
```
### `minecraft:brewing_modify`
- Changes the potion present on the item into another one after brewing.
- Format:
- `group`: An optional string. Used to group recipes together.
- `base`: A potion. The potion to modify.
- `addition`: An ingredient. The items to accept to modify the potion.
- `result`: A potion. The potion to leave.
- A remainder may be specified for the addition that is left in the slot or dropped in the world after brewing.
Example:
```json
{
"type": "minecraft:brewing_modify",
"addition": {
"item": "minecraft:sugar"
},
"base": "minecraft:awkward",
"result": "minecraft:swiftness"
}
```
beta
Itematic 0.5.0 Preview 1 for 1.21.3
0.5.0-preview.1+1.21.313 февр. 2026 г.32Minecraft: 1.21.2, 1.21.3fabric
Что нового
This preview version has a big change by renaming the root fields for items.
It also moves crafting remainders to recipes.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
- Removed armour materials entirely.
- Its values are now inlined in the `minecraft:armor` item behaviour component instead.
## Items
- Renamed the `base` field to `display`.
- It only contains data related to the item's display.
- Renamed the `components` field to `behavior`.
- It only contains (or should only contain) item behaviour. Everything else must be moved elsewhere.
These two changes have been made due to a new required field in the item display, which already breaks all existing item definitions.
- Added the `model` field to the item display.
- Its value is an id referencing an item model in a resource pack.
- This value can be changed for individual item stacks in the `minecraft:item_model` data component.
- Added the optional `tooltip_style` field to the item display.
- Its value is an id referencing a texture in a resource pack.
- This value can be changed for individual item stacks in the `minecraft:tooltip_style` data component.
- Added the `minecraft:before_death_holder` item event.
So if you had this:
```json
{
"base": {
"translation_key": "item.minecraft.stick"
},
"components": {
"minecraft:fuel": {
"ticks": 100
},
"minecraft:stackable": 64
}
}
```
You now have to use this instead:
```json
{
"display": {
"translation_key": "item.minecraft.stick",
"model": "minecraft:stick"
},
"behavior": {
"minecraft:fuel": {
"ticks": 100
},
"minecraft:stackable": 64
}
}
```
## Item Behaviour Components
- Added the following item behaviour components:
- `minecraft:glider`
- Removed the following item behaviour components:
- `minecraft:life_saving`
- This has been replaced with the new `minecraft:before_death_holder` item event.
- To replicate the previous behaviour, the `minecraft:clear_status_effects` and `minecraft:add_status_effects` actions can be used.
- Note that this means that the `minecraft:death_protection` data component is unused as a result.
- The reason this was moved to an item event is to support the newly added 'consume effects' from the `minecraft:death_protection` data component from vanilla in 1.21.3, which the action system accommodates for with even more possibilities.
- `minecraft:recipe_remainder`
- This has been replaced by remainders in recipe ingredients directly and the new remainder field in the minecraft:fuel item behaviour component.
- `minecraft:useable_on_fluid`
- This has been replaced in favour of passes in their respective behaviour components.
### `minecraft:armor`
- Modified `minecraft:armor`.
- Removed the need for armour materials by inlining the fields instead.
- Fields:
- `defense`: A non-negative integer. The amount of armour points to add to the `minecraft:armor` attribute.
- `toughness`: A non-negative double. The amount of toughness to add to the `minecraft:armor_toughness` attribute.
- `knockback_resistance` A non-negative double. The amount of knockback resistance to add to the `minecraft:knockback_resistance` attribute.
- `attribute_id`: An identifier. The id to use for the attribute modifiers.
Example:
```json
{
"minecraft:armor": {
"attribute_id": "minecraft:armor.chestplate",
"defense": 6,
"knockback_resistance": 0.0,
"toughness": 0.0
}
}
```
### `minecraft:consumable`
- Moved the `result_item` field to `remainder` in `minecraft:useable`.
### `minecraft:cooldown`
- Added an optional `group` field, which is the id to use as the cooldown group. If not specified, it will use the item id
### `minecraft:entity`
- Added an optional `passes` field, which is a list of strings that allows its user to place an entity given a certain context.
- `block`: Allows the user to place the entity on a block.
- `fluid`: Allows the user to place the entity on a fluid.
- Its default value is `["block"]`.
Example:
```json
{
"allow_item_data": true,
"entity": {
"type": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
```
### `minecraft:equipment`
- Updated to match the `minecraft:equippable` data component.
- Note that the `dispensable` field is unused as it has been replaced by the `minecraft:dispensable` item behaviour.
### `minecraft:food`
- Removed the `effects` field.
- This should now be applied with the `minecraft:consume_item` or `minecraft:eat_item` item event combined with predicates and the new `minecraft:add_status_effects` action.
So if you had this:
```json
{
"components": {
"minecraft:food": {
"effects": [
{
"effect": {
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
},
"probability": 0.8
}
],
"nutrition": 4,
"saturation": 0.8
}
}
}
```
You now have to use this instead:
```json
{
"components": {
"minecraft:food": {
"nutrition": 4,
"saturation": 0.8
}
},
"events": {
"minecraft:consume_item": {
"action": {
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
}
],
"entity": "this"
},
"requirements": {
"conditions": {
"chance": 0.8,
"condition": "minecraft:random_chance"
},
"context": {
"entity": "this",
"position": "this"
}
}
}
}
}
```
### `minecraft:fuel`
- Added an optional `remainder` field, which is the item stack to leave when used as a fuel.
- This replaces the `minecraft:recipe_remainder` item behaviour that was used previously for this.
Example:
```json
{
"remainder": {
"id": "minecraft:bucket",
"count": 1
},
"ticks": 20000
}
```
### `minecraft:glider`
- Allows its user to glide in the air and use Firework Rockets to boost themselves forwards.
- Fields:
- `useable_if`: An optional item predicate. Checks whether its user can use the glider. If not specified, the user can always use the glider.
### `minecraft:useable`
- Added an optional `remainder` field, which is the item stack to leave when finished using, whether instantaneous or over a specified duration.
Example:
```json
{
"animation": "eat",
"remainder": {
"id": "minecraft:bowl",
"count": 1
},
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
- Changed the way the use duration in the `ticks` field works:
- If not specified, the item will be used instantly instead of being used indefinitely.
- To reproduce the previous behaviour, use the new `minecraft:indefinite` use duration provider.
- This makes the field in the behaviour component the same as the data component in all cases.
- A positive integer can still be used as a direct usage of `minecraft:constant`.
So if you had this:
```json
{
"minecraft:useable": {
"animation": "block"
}
}
```
You now have to use this instead:
```json
{
"minecraft:useable": {
"animation": "block",
"ticks": {
"type": "minecraft:indefinite"
}
}
}
```
## Data Components
- Removed the following data components:
- `minecraft:immune_to_damage`
- This has been replaced by `minecraft:damage_resistant` from vanilla.
- Entries are datafixed properly.
- Made the following data components unused:
- `minecraft:death_protection`
- This has been replaced by the `minecraft:before_death_holder` item event to accommodate more actions.
- The reason the data component itself still exists is to not break existing worlds.
### `minecraft:equippable`
- No longer uses the `dispensable` field as it has been replaced by the `minecraft:dispensable` item behaviour.
### `minecraft:glider`
- Now has an optional `useable_if` field, which is an item predicate to check whether its user can use the glider.
- If not specified, the user can always use the glider.
### `minecraft:use_duration`
- You now no longer specify a `ticks` field, making it consistent with the way it is used in the `minecraft:useable` behaviour.
So if you had this:
```json
{
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:constant",
"amount": 32
}
```
- You can no longer specify an empty map to specify an indefinite use duration and you must use the `minecraft:indefinite` use duration provider instead.
So if you had this:
```json
{}
```
You must now use this:
```json
{
"type": "minecraft:indefinite"
}
```
- A positive integer can still be used as a direct usage of the `minecraft:constant` use duration provider.
### `minecraft:weapon_attack_damage`
- When determining whether to add the base `minecraft:attack_damage` attribute or not, it now defaults to `true` instead of `false` and must be explicitly set by `rules` accordingly.
## Use Durations
- Added the following use durations:
- `minecraft:indefinite`
### `minecraft:indefinite`
- Always uses the item indefinitely.
- Has no additional fields.
## Actions
- Added the following actions:
- `minecraft:add_status_effects`
### `minecraft:add_status_effects`
- Adds status effects to an entity.
- The action is unsuccessful if the entity does not exist, is not a living entity or if no effect is added.
- Fields:
- `effects`: A list of status effects. The effects to apply to the entity.
- `entity`: An action context parameter. The entity to target.
Example:
```json
{
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:regeneration",
"amplifier": 1,
"duration": 100,
"show_icon": true
},
{
"id": "minecraft:absorption",
"duration": 2400,
"show_icon": true
}
],
"entity": "this"
}
```
## Entity Initialisers
- Removed the `variant` field from `minecraft:boat` as its variant has been split up into separate entity types.
So if you had this:
```json
{
"type": "minecraft:boat",
"variant": "minecraft:oak"
}
```
You must now use this instead:
```json
{
"type": "minecraft:oak_boat"
}
```
- Removed the `prevent_spawn_from_riptide` field from `minecraft:trident`.
## Recipes
- Removed the following recipe types:
- `minecraft:item_coloring`
- This has been replaced by `minecraft:crafting_transmute` from vanilla.
- Added remainders to ingredients.
- Replaces the `minecraft:recipe_remainder` item behaviour component.
- The existing format still works.
- Currently only in use for shaped and shapeless recipes.
- Fields:
- `items`: An item, list of items or hash-prefixed item tag. The items to allow for this ingredient.
- `remainder`: An optional item stack. The item stack to leave when the ingredient is consumed.
Example:
```json
{
"items": "minecraft:milk_bucket",
"remainder": {
"id": "minecraft:bucket",
"count": 1
}
}
```
## Colour Providers
- Added the following colour provider types:
- `minecraft:first_to_pass_condition`
### `minecraft:first_to_pass_condition`
- Uses the first colour provider whose condition passes or uses the fallback otherwise.
- Fields:
- `entries`: A non-empty list of colour providers. The colours to pick from depending on their conditions.
- `fallback`: The fallback colour provider to use when all entries fail.
- Entry fields:
- `color`: A colour provider.
- `condition`: An entry condition. The condition that needs to pass in order to use this colour provider.
- Entry condition fields:
- `progress`: A number range that checks for the progress.
Example:
```json
{
"type": "minecraft:first_to_pass_condition",
"entries": [
{
"color": {
"type": "minecraft:constant",
"color": -43948
},
"condition": {
"progress": 1.0
}
}
],
"fallback": {
"type": "minecraft:constant",
"color": -9402369
}
}
```
beta
Itematic 0.5.0 Preview 1 for 1.21.1
0.5.0-preview.1+1.21.113 февр. 2026 г.30Minecraft: 1.21, 1.21.1fabric
Что нового
This preview version moves crafting remainders to recipes and adds more actions.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Items
- Added the `minecraft:before_death_holder` item event.
## Item Behaviour Components
- Removed the following item behaviour components:
- `minecraft:life_saving`
- This has been replaced with the new `minecraft:before_death_holder` item event.
- To replicate the previous behaviour, the `minecraft:clear_status_effects` and `minecraft:add_status_effects` actions can be used.
- Note that this means that the `minecraft:death_protection` data component is unused as a result.
- The reason this was moved to an item event is to support the newly added 'consume effects' from the `minecraft:death_protection` data component from vanilla in 1.21.3, which the action system accommodates for with even more possibilities.
- `minecraft:recipe_remainder`
- This has been replaced by remainders in recipe ingredients directly and the new remainder field in the minecraft:fuel item behaviour component.
- `minecraft:useable_on_fluid`
- This has been replaced in favour of passes in their respective behaviour components.
### `minecraft:consumable`
- Moved the `result_item` field to `remainder` in `minecraft:useable`.
### `minecraft:entity`
- Added an optional `passes` field, which is a list of strings that allows its user to place an entity given a certain context.
- `block`: Allows the user to place the entity on a block.
- `fluid`: Allows the user to place the entity on a fluid.
- Its default value is `["block"]`.
Example:
```json
{
"allow_item_data": true,
"entity": {
"type": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
```
### `minecraft:food`
- Removed the `effects` field.
- This should now be applied with the `minecraft:consume_item` or `minecraft:eat_item` item event combined with predicates and the new `minecraft:add_status_effects` action.
So if you had this:
```json
{
"components": {
"minecraft:food": {
"effects": [
{
"effect": {
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
},
"probability": 0.8
}
],
"nutrition": 4,
"saturation": 0.8
}
}
}
```
You now have to use this instead:
```json
{
"components": {
"minecraft:food": {
"nutrition": 4,
"saturation": 0.8
}
},
"events": {
"minecraft:consume_item": {
"action": {
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:hunger",
"duration": 600,
"show_icon": true
}
],
"entity": "this"
},
"requirements": {
"conditions": {
"chance": 0.8,
"condition": "minecraft:random_chance"
},
"context": {
"entity": "this",
"position": "this"
}
}
}
}
}
```
### `minecraft:fuel`
- Added an optional `remainder` field, which is the item stack to leave when used as a fuel.
- This replaces the `minecraft:recipe_remainder` item behaviour that was used previously for this.
Example:
```json
{
"remainder": {
"id": "minecraft:bucket",
"count": 1
},
"ticks": 20000
}
```
### `minecraft:useable`
- Added an optional `remainder` field, which is the item stack to leave when finished using, whether instantaneous or over a specified duration.
Example:
```json
{
"animation": "eat",
"remainder": {
"id": "minecraft:bowl",
"count": 1
},
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
- Changed the way the use duration in the `ticks` field works:
- If not specified, the item will be used instantly instead of being used indefinitely.
- To reproduce the previous behaviour, use the new `minecraft:indefinite` use duration provider.
- This makes the field in the behaviour component the same as the data component in all cases.
- A positive integer can still be used as a direct usage of `minecraft:constant`.
So if you had this:
```json
{
"minecraft:useable": {
"animation": "block"
}
}
```
You now have to use this instead:
```json
{
"minecraft:useable": {
"animation": "block",
"ticks": {
"type": "minecraft:indefinite"
}
}
}
```
## Data Components
- Removed the following data components:
- `minecraft:immune_to_damage`
- This has been replaced by `minecraft:damage_resistant` from vanilla.
- Entries are datafixed properly.
### `minecraft:use_duration`
- You now no longer specify a `ticks` field, making it consistent with the way it is used in the `minecraft:useable` behaviour.
So if you had this:
```json
{
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:constant",
"amount": 32
}
```
- You can no longer specify an empty map to specify an indefinite use duration and you must use the `minecraft:indefinite` use duration provider instead.
So if you had this:
```json
{}
```
You must now use this:
```json
{
"type": "minecraft:indefinite"
}
```
- A positive integer can still be used as a direct usage of the `minecraft:constant` use duration provider.
### `minecraft:weapon_attack_damage`
- When determining whether to add the base `minecraft:attack_damage` attribute or not, it now defaults to `true` instead of `false` and must be explicitly set by `rules` accordingly.
## Use Durations
- Added the following use durations:
- `minecraft:indefinite`
### `minecraft:indefinite`
- Always uses the item indefinitely.
- Has no additional fields.
## Actions
- Added the following actions:
- `minecraft:add_status_effects`
### `minecraft:add_status_effects`
- Adds status effects to an entity.
- The action is unsuccessful if the entity does not exist, is not a living entity or if no effect is added.
- Fields:
- `effects`: A list of status effects. The effects to apply to the entity.
- `entity`: An action context parameter. The entity to target.
Example:
```json
{
"type": "minecraft:add_status_effects",
"effects": [
{
"id": "minecraft:regeneration",
"amplifier": 1,
"duration": 100,
"show_icon": true
},
{
"id": "minecraft:absorption",
"duration": 2400,
"show_icon": true
}
],
"entity": "this"
}
```
## Recipes
- Added remainders to ingredients.
- Replaces the `minecraft:recipe_remainder` item behaviour component.
- The existing format still works.
- Currently only in use for shaped and shapeless recipes.
- Fields:
- `items`: An ingredient entry or list of ingredient entries.
- `remainder`: An optional item stack. The item stack to leave when the ingredient is consumed.
Example:
```json
{
"items": {
"item": "minecraft:milk_bucket"
},
"remainder": {
"id": "minecraft:bucket",
"count": 1
}
}
```
release
Itematic 0.4.1 for 1.21.1
0.4.1+1.21.126 янв. 2026 г.57Minecraft: 1.21, 1.21.1fabric
Что нового
- Fix compatibility issue with lithium regarding Ominous Banners ([#67](https://github.com/ErrorCraft/Itematic/issues/67))
release
Itematic 0.4.0 for 1.21.1
0.4.0+1.21.125 янв. 2026 г.33Minecraft: 1.21, 1.21.1fabric
Что нового
The very first release for multiple Minecraft versions!
This version has a lot of changes regarding shooters, enchantments and songs.
For more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Item Behaviour Components
- Added the following item behaviour components:
- `minecraft:ominous_effect_provider`
- Renamed `minecraft:record` to `minecraft:playable_song`.
- This makes it consistent with `minecraft:playable` and describes the behaviour better.
- The term 'song' is used due to the new Jukebox songs that were added in 24w21a.
- Its value is now an id pointing to a Jukebox song instead of containing the song data itself.
- This value can be changed for individual item stacks in the `minecraft:jukebox_song` data component.
So if you had this:
```json
{
"minecraft:record": {
"description_key": "item.minecraft.music_disc_cat.desc",
"duration": 3700,
"output_signal": 2,
"sound_event": "minecraft:music_disc.cat"
}
}
```
You must now use this instead:
```json
{
"minecraft:playable_song": "minecraft:cat"
}
```
With the following Jukebox song:
```json
{
"comparator_output": 2,
"description": {
"translate": "jukebox_song.minecraft.cat"
},
"length_in_seconds": 185.0,
"sound_event": "minecraft:music_disc.cat"
}
```
### `minecraft:consumable`
- Added a new optional field called `has_consume_particles`.
- Its value is a boolean which determines whether particles are displayed when consuming the item.
- It has a default value of `true`.
- Added a new optional field called `sound`.
- Its value is a sound event and determines what sound to play when consuming the item.
- If no sound is specified, it will not play any sound when consuming the item.
Example:
```json
{
"minecraft:consumable": {
"has_consume_particles": false,
"result_item": "minecraft:glass_bottle",
"sound": "minecraft:item.honey_bottle.drink"
}
}
```
### `minecraft:enchantable`
- Removed the `enchantments` field.
- This behaviour is now specified by data-driven enchantments via the `supported_items` field.
- To allow any enchantment on this item, like the Book item, the `transforms_into` field must be set instead.
### `minecraft:forgeable`
- Removed the item behaviour component.
- This behaviour is now specified by data-driven enchantments via the `supported_items` field.
### `minecraft:ominous_effect_provider`
- This behaviour adds the Bad Omen effect when its user finishes using the item.
- Its effect amplifier is retrieved from the `minecraft:ominous_bottle_amplifier` data component, just like vanilla.
- Its value is an empty map.
### `minecraft:projectile`
- Removed the `damage` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `item_damage` field.
- Removed the `charged_speed` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `charged_power_rules` field of a `minecraft:chargeable` shooter method.
### `minecraft:shooter`
- Removed the `chargeable` field.
- This behaviour is replaced with shooter methods.
- Added a new field called `method`.
- Its value is a shooter method which determines what kind of shooter this item is.
- See the shooter methods section for more information.
- Added a new field called `item_damage`.
- Its value is an item damage provider and determines the damage to apply to the item stack when used to shoot.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
- This value can be changed for individual item stacks in the new `minecraft:shooter_damage_rules` data component.
Example:
```json
{
"minecraft:shooter": {
"ammunition": "#minecraft:bow_ammunition",
"held_ammunition": "#minecraft:crossbow_ammunition",
"item_damage": {
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
},
"method": {
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
},
"range": 8
}
}
```
### `minecraft:weapon`
- Added a new optional field called `may_smash`.
- Its value is a boolean which determines whether this weapon may be used as a smashing weapon.
- It has a default value of `false`.
Example:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 6.0,
"rules": []
},
"attack_speed": 0.125,
"may_smash": true
}
}
```
## Data Components
- Added the following data components:
- `minecraft:shooter_charged_power_rules`
- `minecraft:shooter_damage_rules`
- `minecraft:shooter_default_charge_time`
- `minecraft:shooter_default_charging_sounds`
- `minecraft:shooter_shoot_sound`
### `minecraft:shooter_charged_power_rules`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the charged shooter will not shoot any projectile.
- Format:
- `rules`: A list of charged power rules. Determines the power to add to the projectile shot from the charged shooter by using the lowest amount picked from all projectiles. See the charged power rules section for more information.
- `default_power`: A non-negative float. The default power to add.
Example:
```json
{
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
}
```
### `minecraft:shooter_damage_rules`
- Specified and used by the `minecraft:shooter` item behaviour component.
- If removed, the item stack will not be damaged.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
Example:
```json
{
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
}
```
### `minecraft:shooter_default_charge_time`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will always use a charge time of 0 ticks (it charges instantly when used), regardless of its enchantments.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charge_time` effect component.
- Its value is a non-negative float.
### `minecraft:shooter_default_charging_sounds`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will not play any sounds by default.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charging_sounds` effect component.
- Format:
- `start`: An optional sound event. The sound to play when the chargeable shooter is 20% charged.
- `mid`: An optional sound event. The sound to play when the chargeable shooter is 50% charged.
- `end`: An optional sound event. The sound to play when the chargeable shooter is 100% charged.
Example:
```json
{
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
```
### `minecraft:shooter_shoot_sound`
- Specified and used by the `minecraft:direct` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the direct shooter will not play a sound when used to shoot.
- Its value is a sound event.
## Item Group Entry Providers
- Added the following item group entry provider types:
- `enchantment`
### `enchantment`
- Replaces the previously hardcoded set of item stacks with enchantments.
- Adds all enchantments with the specified item to the item group, sorted lexicographically using its id, first by namespace and by path afterwards, just like vanilla.
- Only the highest level of each enchantment is visible in the specified item group, but all levels are visible in the search group, just like vanilla.
- Format:
- `item`: An item. The item to use for the item stacks to add each enchantment to.
- Unlike other types, this type does not have the `visibility` and `requires_permissions` fields as they are determined automatically for each entry.
Example:
```json
{
"type": "enchantment",
"item": "minecraft:enchanted_book"
}
```
## Actions
### `minecraft:play_sound`
- Made the `category` field optional.
- If not specified, will try to use the sound category from `this` entity instead.
- Now fails if no sound category was available.
## Item Modifiers
- Reverted `minecraft:set_potion` to its vanilla state.
- This has been replaced by the `minecraft:set_random_potion` item modifier.
- Added `minecraft:set_random_potion`.
- This change is made for future compatibility with 26.1 snapshot 1.
- Fields:
- `conditions`: The conditions for the item modifier to apply.
- `options`: An optional potion, list of potions or hash-prefixed potion tag. The possible potions to pick from. If not specified, will pick from every potion available.
## Shooter Methods
A shooter method determines how a shooter item should behave.
- Format: A map with fields determined by the type in the `type` field.
### `minecraft:chargeable`
- Charges projectiles before shooting them, like the Crossbow.
- Format:
- `default_charge_time`: A non-negative float. The default charge time to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charge_time` data component.
- `default_charging_sounds`: The same structure as the `minecraft:shooter_default_charge_time` data component. The default charge sounds to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charging_sounds` data component.
- `charged_power_rules`: The same structure as the `minecraft:shooter_charged_power_rules` data component. Determines the power used for projectiles. This value can be changed for individual item stacks in the new `minecraft:shooter_charged_power_rules` data component.
Example:
```json
{
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
}
```
### `minecraft:direct`
- Shoots projectiles immediately when used, like the Bow.
- Format:
- `shoot_sound`: An optional sound event. The sound to play when shooting with the shooter. Its default value is `"minecraft:entity.arrow.shoot"`. This value can be changed for individual item stacks in the new `minecraft:shooter_shoot_sound` data component.
Example:
```json
{
"type": "minecraft:direct"
}
```
## Item Damage Rules
An item damage rule determines the damage to apply to the item stack when used to shoot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `damage`: An optional non-negative integer. When specified, will be the damage applied to the item stack.
### Example
```json
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
```
## Charged Power Rules
A charged power rule determines the maximum power to apply to the charged projectiles when they are shot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `power`: An optional non-negative float. When specified, will be the maximum power applied to the charged projectiles.
### Example
```json
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
```
# Fixes
- Multishot and Piercing don't work on Bows ([#57](https://github.com/ErrorCraft/Itematic/issues/57))
- Infinity does not work on Crossbows ([#58](https://github.com/ErrorCraft/Itematic/issues/58))
- Eating Beetroot Soup does not leave a Bowl ([#61](https://github.com/ErrorCraft/Itematic/issues/61))
- Fixed shooter animations
- Fixed Books not working in Enchanting Tables
- Fixed Anvils accepting any enchantment, even if disallowed
release
Itematic 0.4.0 for 1.20.6
0.4.0+1.20.625 янв. 2026 г.36Minecraft: 1.20.5, 1.20.6fabric
Что нового
The very first release for multiple Minecraft versions!
This version has a lot of changes regarding shooters.
For more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Item Behaviour Components
### `minecraft:consumable`
- Added a new optional field called `has_consume_particles`.
- Its value is a boolean which determines whether particles are displayed when consuming the item.
- It has a default value of `true`.
- Added a new optional field called `sound`.
- Its value is a sound event and determines what sound to play when consuming the item.
- If no sound is specified, it will not play any sound when consuming the item.
Example:
```json
{
"minecraft:consumable": {
"has_consume_particles": false,
"result_item": "minecraft:glass_bottle",
"sound": "minecraft:item.honey_bottle.drink"
}
}
```
### `minecraft:projectile`
- Removed the `damage` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `item_damage` field.
- Removed the `charged_speed` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `charged_power_rules` field of a `minecraft:chargeable` shooter method.
### `minecraft:shooter`
- Removed the `chargeable` field.
- This behaviour is replaced with shooter methods.
- Added a new field called `method`.
- Its value is a shooter method which determines what kind of shooter this item is.
- See the shooter methods section for more information.
- Added a new field called `item_damage`.
- Its value is an item damage provider and determines the damage to apply to the item stack when used to shoot.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
- This value can be changed for individual item stacks in the new `minecraft:shooter_damage_rules` data component.
Example:
```json
{
"minecraft:shooter": {
"ammunition": "#minecraft:bow_ammunition",
"held_ammunition": "#minecraft:crossbow_ammunition",
"item_damage": {
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
},
"method": {
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
},
"range": 8
}
}
```
## Data Components
- Added the following data components:
- `minecraft:shooter_charged_power_rules`
- `minecraft:shooter_damage_rules`
- `minecraft:shooter_default_charge_time`
- `minecraft:shooter_default_charging_sounds`
- `minecraft:shooter_shoot_sound`
### `minecraft:shooter_charged_power_rules`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the charged shooter will not shoot any projectile.
- Format:
- `rules`: A list of charged power rules. Determines the power to add to the projectile shot from the charged shooter by using the lowest amount picked from all projectiles. See the charged power rules section for more information.
- `default_power`: A non-negative float. The default power to add.
Example:
```json
{
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
}
```
### `minecraft:shooter_damage_rules`
- Specified and used by the `minecraft:shooter` item behaviour component.
- If removed, the item stack will not be damaged.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
Example:
```json
{
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
}
```
### `minecraft:shooter_default_charge_time`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will always use a charge time of 0 ticks (it charges instantly when used), regardless of its enchantments.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charge_time` effect component.
- Its value is a non-negative float.
### `minecraft:shooter_default_charging_sounds`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will not play any sounds by default.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charging_sounds` effect component.
- Format:
- `start`: An optional sound event. The sound to play when the chargeable shooter is 20% charged.
- `mid`: An optional sound event. The sound to play when the chargeable shooter is 50% charged.
- `end`: An optional sound event. The sound to play when the chargeable shooter is 100% charged.
Example:
```json
{
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
```
### `minecraft:shooter_shoot_sound`
- Specified and used by the `minecraft:direct` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the direct shooter will not play a sound when used to shoot.
- Its value is a sound event.
## Actions
### `minecraft:play_sound`
- Made the `category` field optional.
- If not specified, will try to use the sound category from `this` entity instead.
- Now fails if no sound category was available.
## Shooter Methods
A shooter method determines how a shooter item should behave.
- Format: A map with fields determined by the type in the `type` field.
### `minecraft:chargeable`
- Charges projectiles before shooting them, like the Crossbow.
- Format:
- `default_charge_time`: A non-negative float. The default charge time to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charge_time` data component.
- `default_charging_sounds`: The same structure as the `minecraft:shooter_default_charge_time` data component. The default charge sounds to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charging_sounds` data component.
- `charged_power_rules`: The same structure as the `minecraft:shooter_charged_power_rules` data component. Determines the power used for projectiles. This value can be changed for individual item stacks in the new `minecraft:shooter_charged_power_rules` data component.
Example:
```json
{
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
}
```
### `minecraft:direct`
- Shoots projectiles immediately when used, like the Bow.
- Format:
- `shoot_sound`: An optional sound event. The sound to play when shooting with the shooter. Its default value is `"minecraft:entity.arrow.shoot"`. This value can be changed for individual item stacks in the new `minecraft:shooter_shoot_sound` data component.
Example:
```json
{
"type": "minecraft:direct"
}
```
## Item Damage Rules
An item damage rule determines the damage to apply to the item stack when used to shoot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `damage`: An optional non-negative integer. When specified, will be the damage applied to the item stack.
### Example
```json
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
```
## Charged Power Rules
A charged power rule determines the maximum power to apply to the charged projectiles when they are shot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `power`: An optional non-negative float. When specified, will be the maximum power applied to the charged projectiles.
### Example
```json
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
```
# Fixes
- Multishot and Piercing don't work on Bows ([#57](https://github.com/ErrorCraft/Itematic/issues/57))
- Infinity does not work on Crossbows ([#58](https://github.com/ErrorCraft/Itematic/issues/58))
- Eating Beetroot Soup does not leave a Bowl ([#61](https://github.com/ErrorCraft/Itematic/issues/61))
- Fixed shooter animations
- Fixed Books not working in Enchanting Tables
- Fixed Anvils accepting any enchantment, even if disallowed
beta
Itematic 0.4.0 Preview 2 for 1.21.1
0.4.0-preview.2+1.21.122 янв. 2026 г.34Minecraft: 1.21, 1.21.1fabric
Что нового
A small update porting all the way to 1.21.1!
# Changes
## Item Behaviour Components
- Renamed `minecraft:record` to `minecraft:playable_song`.
- This makes it consistent with `minecraft:playable` and describes the behaviour better.
- The term 'song' is used due to the new Jukebox songs that were added in 24w21a.
- Its value is now an id pointing to a Jukebox song instead of containing the song data itself.
- This value can be changed for individual item stacks in the `minecraft:jukebox_song` data component.
So if you had this:
```json
{
"minecraft:record": {
"description_key": "item.minecraft.music_disc_cat.desc",
"duration": 3700,
"output_signal": 2,
"sound_event": "minecraft:music_disc.cat"
}
}
```
You must now use this instead:
```json
{
"minecraft:playable_song": "minecraft:cat"
}
```
With the following Jukebox song:
```json
{
"comparator_output": 2,
"description": {
"translate": "jukebox_song.minecraft.cat"
},
"length_in_seconds": 185.0,
"sound_event": "minecraft:music_disc.cat"
}
```
## Item Modifiers
- Reverted `minecraft:set_potion` to its vanilla state.
- This has been replaced by the `minecraft:set_random_potion` item modifier.
- Added `minecraft:set_random_potion`.
- This change is made for future compatibility with 26.1 snapshot 1.
- Fields:
- `conditions`: The conditions for the item modifier to apply.
- `options`: An optional potion, list of potions or hash-prefixed potion tag. The possible potions to pick from. If not specified, will pick from every potion available.
beta
Itematic 0.4.0 Preview 1 for 1.21 (24w18a)
0.4.0-preview.1+1.2120 янв. 2026 г.30Minecraft: 24w18afabric
Что нового
The very first preview version for multiple Minecraft versions!
This version has a lot of changes regarding shooters and enchantments.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Item Behaviour Components
- Added the following item behaviour components:
- `minecraft:ominous_effect_provider`
### `minecraft:consumable`
- Added a new optional field called `has_consume_particles`.
- Its value is a boolean which determines whether particles are displayed when consuming the item.
- It has a default value of `true`.
- Added a new optional field called `sound`.
- Its value is a sound event and determines what sound to play when consuming the item.
- If no sound is specified, it will not play any sound when consuming the item.
Example:
```json
{
"minecraft:consumable": {
"has_consume_particles": false,
"result_item": "minecraft:glass_bottle",
"sound": "minecraft:item.honey_bottle.drink"
}
}
```
### `minecraft:enchantable`
- Removed the `enchantments` field.
- This behaviour is now specified by data-driven enchantments via the `supported_items` field.
- To allow any enchantment on this item, like the Book item, the `transforms_into` field must be set instead.
### `minecraft:forgeable`
- Removed the item behaviour component.
- This behaviour is now specified by data-driven enchantments via the `supported_items` field.
### `minecraft:ominous_effect_provider`
- This behaviour adds the Bad Omen effect when its user finishes using the item.
- Its effect amplifier is retrieved from the `minecraft:ominous_bottle_amplifier` data component, just like vanilla.
- Its value is an empty map.
### `minecraft:projectile`
- Removed the `damage` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `item_damage` field.
- Removed the `charged_speed` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `charged_power_rules` field of a `minecraft:chargeable` shooter method.
### `minecraft:shooter`
- Removed the `chargeable` field.
- This behaviour is replaced with shooter methods.
- Added a new field called `method`.
- Its value is a shooter method which determines what kind of shooter this item is.
- See the shooter methods section for more information.
- Added a new field called `item_damage`.
- Its value is an item damage provider and determines the damage to apply to the item stack when used to shoot.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
- This value can be changed for individual item stacks in the new `minecraft:shooter_damage_rules` data component.
Example:
```json
{
"minecraft:shooter": {
"ammunition": "#minecraft:bow_ammunition",
"held_ammunition": "#minecraft:crossbow_ammunition",
"item_damage": {
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
},
"method": {
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
},
"range": 8
}
}
```
### `minecraft:weapon`
- Added a new optional field called `may_smash`.
- Its value is a boolean which determines whether this weapon may be used as a smashing weapon.
- It has a default value of `false`.
Example:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 6.0,
"rules": []
},
"attack_speed": 0.125,
"may_smash": true
}
}
```
## Data Components
- Added the following data components:
- `minecraft:shooter_charged_power_rules`
- `minecraft:shooter_damage_rules`
- `minecraft:shooter_default_charge_time`
- `minecraft:shooter_default_charging_sounds`
- `minecraft:shooter_shoot_sound`
### `minecraft:shooter_charged_power_rules`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the charged shooter will not shoot any projectile.
- Format:
- `rules`: A list of charged power rules. Determines the power to add to the projectile shot from the charged shooter by using the lowest amount picked from all projectiles. See the charged power rules section for more information.
- `default_power`: A non-negative float. The default power to add.
Example:
```json
{
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
}
```
### `minecraft:shooter_damage_rules`
- Specified and used by the `minecraft:shooter` item behaviour component.
- If removed, the item stack will not be damaged.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
Example:
```json
{
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
}
```
### `minecraft:shooter_default_charge_time`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will always use a charge time of 0 ticks (it charges instantly when used), regardless of its enchantments.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charge_time` effect component.
- Its value is a non-negative float.
### `minecraft:shooter_default_charging_sounds`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will not play any sounds by default.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charging_sounds` effect component.
- Format:
- `start`: An optional sound event. The sound to play when the chargeable shooter is 20% charged.
- `mid`: An optional sound event. The sound to play when the chargeable shooter is 50% charged.
- `end`: An optional sound event. The sound to play when the chargeable shooter is 100% charged.
Example:
```json
{
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
```
### `minecraft:shooter_shoot_sound`
- Specified and used by the `minecraft:direct` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the direct shooter will not play a sound when used to shoot.
- Its value is a sound event.
## Item Group Entry Providers
- Added the following item group entry provider types:
- `enchantment`
### `enchantment`
- Replaces the previously hardcoded set of item stacks with enchantments.
- Adds all enchantments with the specified item to the item group, sorted lexicographically using its id, first by namespace and by path afterwards, just like vanilla.
- Only the highest level of each enchantment is visible in the specified item group, but all levels are visible in the search group, just like vanilla.
- Format:
- `item`: An item. The item to use for the item stacks to add each enchantment to.
- Unlike other types, this type does not have the `visibility` and `requires_permissions` fields as they are determined automatically for each entry.
Example:
```json
{
"type": "enchantment",
"item": "minecraft:enchanted_book"
}
```
## Actions
### `minecraft:play_sound`
- Made the `category` field optional.
- If not specified, will try to use the sound category from `this` entity instead.
- Now fails if no sound category was available.
## Shooter Methods
A shooter method determines how a shooter item should behave.
- Format: A map with fields determined by the type in the `type` field.
### `minecraft:chargeable`
- Charges projectiles before shooting them, like the Crossbow.
- Format:
- `default_charge_time`: A non-negative float. The default charge time to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charge_time` data component.
- `default_charging_sounds`: The same structure as the `minecraft:shooter_default_charge_time` data component. The default charge sounds to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charging_sounds` data component.
- `charged_power_rules`: The same structure as the `minecraft:shooter_charged_power_rules` data component. Determines the power used for projectiles. This value can be changed for individual item stacks in the new `minecraft:shooter_charged_power_rules` data component.
Example:
```json
{
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
}
```
### `minecraft:direct`
- Shoots projectiles immediately when used, like the Bow.
- Format:
- `shoot_sound`: An optional sound event. The sound to play when shooting with the shooter. Its default value is `"minecraft:entity.arrow.shoot"`. This value can be changed for individual item stacks in the new `minecraft:shooter_shoot_sound` data component.
Example:
```json
{
"type": "minecraft:direct"
}
```
## Item Damage Rules
An item damage rule determines the damage to apply to the item stack when used to shoot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `damage`: An optional non-negative integer. When specified, will be the damage applied to the item stack.
### Example
```json
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
```
## Charged Power Rules
A charged power rule determines the maximum power to apply to the charged projectiles when they are shot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `power`: An optional non-negative float. When specified, will be the maximum power applied to the charged projectiles.
### Example
```json
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
```
# Fixes
- Multishot and Piercing don't work on Bows ([#57](https://github.com/ErrorCraft/Itematic/issues/57))
- Infinity does not work on Crossbows ([#58](https://github.com/ErrorCraft/Itematic/issues/58))
- Eating Beetroot Soup does not leave a Bowl ([#61](https://github.com/ErrorCraft/Itematic/issues/61))
- Fixed shooter animations
- Fixed Books not working in Enchanting Tables
- Fixed Anvils accepting any enchantment, even if disallowed
beta
Itematic 0.4.0 Preview 1 for 1.20.6
0.4.0-preview.1+1.20.620 янв. 2026 г.26Minecraft: 1.20.5, 1.20.6fabric
Что нового
The very first preview version for multiple Minecraft versions!
This version has a lot of changes regarding shooters.
For a few more details regarding the split and future you can look at the [roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
# Changes
## Item Behaviour Components
### `minecraft:consumable`
- Added a new optional field called `has_consume_particles`.
- Its value is a boolean which determines whether particles are displayed when consuming the item.
- It has a default value of `true`.
- Added a new optional field called `sound`.
- Its value is a sound event and determines what sound to play when consuming the item.
- If no sound is specified, it will not play any sound when consuming the item.
Example:
```json
{
"minecraft:consumable": {
"has_consume_particles": false,
"result_item": "minecraft:glass_bottle",
"sound": "minecraft:item.honey_bottle.drink"
}
}
```
### `minecraft:projectile`
- Removed the `damage` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `item_damage` field.
- Removed the `charged_speed` field.
- This data is now specified in the `minecraft:shooter` item behaviour component in the `charged_power_rules` field of a `minecraft:chargeable` shooter method.
### `minecraft:shooter`
- Removed the `chargeable` field.
- This behaviour is replaced with shooter methods.
- Added a new field called `method`.
- Its value is a shooter method which determines what kind of shooter this item is.
- See the shooter methods section for more information.
- Added a new field called `item_damage`.
- Its value is an item damage provider and determines the damage to apply to the item stack when used to shoot.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
- This value can be changed for individual item stacks in the new `minecraft:shooter_damage_rules` data component.
Example:
```json
{
"minecraft:shooter": {
"ammunition": "#minecraft:bow_ammunition",
"held_ammunition": "#minecraft:crossbow_ammunition",
"item_damage": {
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
},
"method": {
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
},
"range": 8
}
}
```
## Data Components
- Added the following data components:
- `minecraft:shooter_charged_power_rules`
- `minecraft:shooter_damage_rules`
- `minecraft:shooter_default_charge_time`
- `minecraft:shooter_default_charging_sounds`
- `minecraft:shooter_shoot_sound`
### `minecraft:shooter_charged_power_rules`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the charged shooter will not shoot any projectile.
- Format:
- `rules`: A list of charged power rules. Determines the power to add to the projectile shot from the charged shooter by using the lowest amount picked from all projectiles. See the charged power rules section for more information.
- `default_power`: A non-negative float. The default power to add.
Example:
```json
{
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
}
```
### `minecraft:shooter_damage_rules`
- Specified and used by the `minecraft:shooter` item behaviour component.
- If removed, the item stack will not be damaged.
- Format:
- `rules`: A list of item damage rules. Determines the damage to apply to the item stack. See the item damage rules section for more information.
- `default_damage`: A non-negative integer. The default damage to apply.
Example:
```json
{
"default_damage": 1,
"rules": [
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
]
}
```
### `minecraft:shooter_default_charge_time`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will always use a charge time of 0 ticks (it charges instantly when used), regardless of its enchantments.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charge_time` effect component.
- Its value is a non-negative float.
### `minecraft:shooter_default_charging_sounds`
- Specified and used by the `minecraft:chargeable` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the chargeable shooter will not play any sounds by default.
- The actual value used can be further modified by enchantments via the `minecraft:crossbow_charging_sounds` effect component.
- Format:
- `start`: An optional sound event. The sound to play when the chargeable shooter is 20% charged.
- `mid`: An optional sound event. The sound to play when the chargeable shooter is 50% charged.
- `end`: An optional sound event. The sound to play when the chargeable shooter is 100% charged.
Example:
```json
{
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
```
### `minecraft:shooter_shoot_sound`
- Specified and used by the `minecraft:direct` shooter method in the `minecraft:shooter` item behaviour component.
- If removed, the direct shooter will not play a sound when used to shoot.
- Its value is a sound event.
## Actions
### `minecraft:play_sound`
- Made the `category` field optional.
- If not specified, will try to use the sound category from `this` entity instead.
- Now fails if no sound category was available.
## Shooter Methods
A shooter method determines how a shooter item should behave.
- Format: A map with fields determined by the type in the `type` field.
### `minecraft:chargeable`
- Charges projectiles before shooting them, like the Crossbow.
- Format:
- `default_charge_time`: A non-negative float. The default charge time to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charge_time` data component.
- `default_charging_sounds`: The same structure as the `minecraft:shooter_default_charge_time` data component. The default charge sounds to use without enchantments. This value can be changed for individual item stacks in the new `minecraft:shooter_default_charging_sounds` data component.
- `charged_power_rules`: The same structure as the `minecraft:shooter_charged_power_rules` data component. Determines the power used for projectiles. This value can be changed for individual item stacks in the new `minecraft:shooter_charged_power_rules` data component.
Example:
```json
{
"type": "minecraft:chargeable",
"charged_power_rules": {
"default_power": 3.15,
"rules": [
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
]
},
"default_charge_time": 1.25,
"default_charging_sounds": {
"end": "minecraft:item.crossbow.loading_end",
"mid": "minecraft:item.crossbow.loading_middle",
"start": "minecraft:item.crossbow.loading_start"
}
}
```
### `minecraft:direct`
- Shoots projectiles immediately when used, like the Bow.
- Format:
- `shoot_sound`: An optional sound event. The sound to play when shooting with the shooter. Its default value is `"minecraft:entity.arrow.shoot"`. This value can be changed for individual item stacks in the new `minecraft:shooter_shoot_sound` data component.
Example:
```json
{
"type": "minecraft:direct"
}
```
## Item Damage Rules
An item damage rule determines the damage to apply to the item stack when used to shoot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `damage`: An optional non-negative integer. When specified, will be the damage applied to the item stack.
### Example
```json
{
"damage": 3,
"items": "minecraft:firework_rocket"
}
```
## Charged Power Rules
A charged power rule determines the maximum power to apply to the charged projectiles when they are shot.
### Fields
- `items`: An item, list of items or hash-prefixed item tag. When specified, the item stack has to be one of the specified items in order for the rule to pass.
- `power`: An optional non-negative float. When specified, will be the maximum power applied to the charged projectiles.
### Example
```json
{
"items": "minecraft:firework_rocket",
"power": 1.6
}
```
# Fixes
- Multishot and Piercing don't work on Bows ([#57](https://github.com/ErrorCraft/Itematic/issues/57))
- Infinity does not work on Crossbows ([#58](https://github.com/ErrorCraft/Itematic/issues/58))
- Eating Beetroot Soup does not leave a Bowl ([#61](https://github.com/ErrorCraft/Itematic/issues/61))
- Fixed shooter animations
- Fixed Books not working in Enchanting Tables
- Fixed Anvils accepting any enchantment, even if disallowed
release
Itematic 0.3.0
0.3.011 янв. 2026 г.37Minecraft: 1.20.5, 1.20.6fabric
Что нового
The release before the split to 1.21 happens as described in [the roadmap to 1.21](https://itematic.errorcraft.net/articles/roadmap-to-1-21)!
This version added item bar styles and made a couple of changes to the item holder and block placement behaviour.
# Changes
## Assets
- Added textures for the item bar progress.
## Items
- Added the optional `item_bar_style` field to the item base.
- Has a default value of `minecraft:damage`.
- Its value is an id referencing an item bar style in a resource pack.
- This value can be changed for individual item stacks in the new `minecraft:item_bar_style` data component.
Example:
```json
{
"base": {
"item_bar_style": "minecraft:bundle",
"translation_key": "item.minecraft.bundle"
}
}
```
## Item Behaviour Components
### `minecraft:block`
- Added a new optional field called `passes`:
- Its value is a list of strings that allows its user to place a block given a certain context.
- It replaces the need to use the `minecraft:useable_on_block` behaviour component.
- The default value is `["block"]`.
- Possible values:
- `block`: Allows the user to place the block on another block.
- `fluid`: Allows the user to place the block on a fluid.
- Example from `minecraft:lily_pad`:
```json
{
"block": "minecraft:lily_pad",
"passes": [
"fluid"
]
}
```
### `minecraft:item_holder`
- Added a new field called `rules`:
- Its value is a list of item holder rules and determines whether an item stack can be added or not and decides how much room it takes.
- See the item holder rules section for more information.
- If no rule is picked, the inverse of its maximum stack size will be used instead.
- Its value for a specific item stack may be overwritten in the new `rules` field in the `minecraft:bundle_contents` data component.
An example from the `minecraft:bundle` item:
```json
[
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
},
{
"type": "minecraft:fraction_with_occupancy_held_items",
"condition": {
"behavior": [
"minecraft:item_holder"
]
},
"fraction": {
"denominator": 16,
"numerator": 1
}
},
{
"type": "minecraft:fraction",
"condition": {
"data_components": [
"minecraft:bees"
]
},
"fraction": {
"denominator": 1,
"numerator": 1
}
}
]
```
- Made changes to the `capacity` field:
- Its value is now a positive fraction that is capped at a value of 100 and determines how many 'full stacks' an item holder can hold.
- See the extras section for more information on fractions.
- Its value for a specific item stack may be overwritten with the new `minecraft:item_holder_capacity` data component.
Example:
```json
{
"denominator": 4,
"numerator": 1
}
```
## Data Components
- Added the following data components:
- `minecraft:item_bar_style`
- `minecraft:item_holder_capacity`
- `minecraft:item_holder_rules`
### `minecraft:item_bar_style`
- Specified and used by the item base.
- If removed, will not display an item bar style under any circumstances.
- Its value is an id referencing an item bar style in a resource pack.
### `minecraft:item_holder_capacity`
- Specified and used by the `minecraft:item_holder` behaviour component.
- If removed, the item holder behaviour will no longer work.
- Its value is a positive fraction that is capped at a value of 100 and determines how many 'full stacks' an item holder can hold.
- See the extras section for more information on fractions and its format.
Examples:
- `{"numerator": 1, "denominator": 1}` (`1/1`) would be able to hold 64 item stacks of items stackable to 64.
- `{"numerator": 2, "denominator": 1}` (`2/1`) would be able to hold 128 item stacks of items stackable to 64.
- `{"numerator": 1, "denominator": 2}` (`1/2`) would be able to hold 32 item stacks of items stackable to 64.
### `minecraft:item_holder_rules`
- Specified and used by the `minecraft:item_holder` behaviour component.
- If removed, the item holder behaviour will no longer work.
- Its value is a list of item holder rules.
Example:
```json
[
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
},
{
"type": "minecraft:occupancy_held_items_with_penalty",
"condition": {
"behavior": [
"minecraft:item_holder"
]
},
"penalty": {
"denominator": 16,
"numerator": 1
}
},
{
"type": "minecraft:fraction",
"condition": {
"data_components": [
"minecraft:bees"
]
},
"fraction": {
"denominator": 1,
"numerator": 1
}
}
]
```
## Item Bar Styles
An item bar style determines the visuals for the item bar that is displayed on top of an item stack.
They are specified under the `item_bar_style` folder in a resource pack.
Format:
- `color`: A colour provider. Determines the colour to apply over the texture based on its progress. See the colour providers section for more information.
- `progress`: A progress provider. Determines what texture to use from the `textures` field. See the progress providers section for more information.
- `textures`: A non-empty list of ids pointing to textures in the `minecraft:gui` atlas. The textures to use for the item bar.
- The texture used is determined by the `progress` field, with a value of 0 being the first element and a value of 1 being the last element in the list.
Example:
```json
{
"color": {
"type": "minecraft:hue_shift",
"end": 0,
"start": 120
},
"progress": "minecraft:damage",
"textures": [
"minecraft:item_bar/progress/13",
"minecraft:item_bar/progress/12",
"minecraft:item_bar/progress/11",
"minecraft:item_bar/progress/10",
"minecraft:item_bar/progress/9",
"minecraft:item_bar/progress/8",
"minecraft:item_bar/progress/7",
"minecraft:item_bar/progress/6",
"minecraft:item_bar/progress/5",
"minecraft:item_bar/progress/4",
"minecraft:item_bar/progress/3",
"minecraft:item_bar/progress/2",
"minecraft:item_bar/progress/1",
"minecraft:item_bar/progress/0"
]
}
```
## Colour Providers
A colour provider determines the colour to apply over the texture.
Format: A map with fields determined by the type in the `type` field.
Example:
```json
{
"type": "minecraft:hue_shift",
"end": 0,
"start": 120
}
```
### `minecraft:constant`
- Always applies the specified colour over the texture.
- Fields:
- `color`: An integer. The colour to use.
### `minecraft:hue_shift`
- Linearly shifts the hue from `start` to `end` depending on the progress. Always has a saturation and brightness of 100%.
- Fields:
- `start`: An integer ranging from 0 to 360. The start hue, used exactly when the progress is 0.
- `end`: An integer ranging from 0 to 360. The end hue, used exactly when the progress is 1.
## Progress Providers
A progress provider determines whether to display the item bar and what value to use that determines its texture.
### `minecraft:damage`
- Displays when the item stack is damaged.
- Its value is the damage of the item stack divided by its durability.
### `minecraft:item_holder_occupancy`
- Displays when the item stack's item holder contents are occupied.
- Its value is the occupancy calculated by the item stack's item holder contents.
## Item Holder Rules
An item holder rule determines whether an item stack can be added to an item holder or not and decides how much room it takes.
Its format is a map with fields determined by the `type` in the type field, as well as an optional `condition` field that is an item predicate.
All possible types are shown below.
Example:
```json
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
}
```
### `minecraft:fraction`
- Uses the specified fraction as its occupancy.
- Fields:
- `fraction`: A positive fraction that is capped at a value of 100. The fraction to use as its occupancy.
Example:
```json
{
"type": "minecraft:fraction",
"condition": {
"data_components": [
"minecraft:bees"
]
},
"fraction": {
"denominator": 1,
"numerator": 1
}
}
```
### `minecraft:occupancy_held_items_with_penalty`
- Uses the occupancy of the item stack's item holder item stacks with a penalty added on top of it.
- If the item stack does not have the `minecraft:item_holder` behaviour component or doesn't have the `minecraft:bundle_contents` data component, it will only add the penalty.
- Fields:
- `penalty`: A positive fraction that is capped at a value of 100. The penalty to add to the occupancy.
Example:
```json
{
"type": "minecraft:occupancy_held_items_with_penalty",
"condition": {
"behavior": [
"minecraft:item_holder"
]
},
"penalty": {
"denominator": 16,
"numerator": 1
}
}
```
### `minecraft:reject`
- Prevents the item stack from being added to the item holder altogether.
- Has no additional fields.
Example:
```json
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
}
```
## Extras
### Fractions
- A way of representing fractions to keep accuracy of numbers where this is necessary.
- Fields:
- `numerator`: An integer used for the numerator of the fraction.
- `denominator`: An integer used for the denominator of the fraction.
- Fails to parse the denominator is 0.
Example:
```json
{
"denominator": 4,
"numerator": 1
}
```
### Item Predicates
- Added the following fields:
- `behavior`: An optional list of behaviour component types. Checks whether the item has the specified item behaviour components.
- `data_components`: An optional list of data component types. Checks whether the item stack has the specified data components.
- **Note: this field is temporary and will be removed sometime in 1.21 in favour of component predicates!**
# Fixes
- Fixed a crash when dropping all items from an item holder.
- Fixed the item bar display for item holders with capacities that don't have a value of 1.
- Updating the item holder rules retains the old rules on item stacks that already have contents ([#54](https://github.com/ErrorCraft/Itematic/issues/54))
beta
Itematic 0.3.0 Preview 3
0.3.0-preview.35 янв. 2026 г.33Minecraft: 1.20.5, 1.20.6fabric
Что нового
A new year, a new preview!
In this preview the item holder rules were split into their own data component with a minor change to the rules themselves.
# Changes
## Item Behaviour Components
### `minecraft:item_holder`
- Rules are now modifiable for indivial item stacks with the `minecraft:item_holder_rules` data component instead of being part of `minecraft:bundle_contents`.
- All item holders now use the same default `minecraft:bundle_contents` data component again.
## Data Components
- Added the following data components:
- `minecraft:item_holder_rules`
### `minecraft:bundle_contents`
- Reverted the component to its previous form by moving the rules to their own data component.
### `minecraft:item_holder_rules`
- Specified and used by the `minecraft:item_holder` behaviour component.
- If removed, the item holder behaviour will no longer work.
- Its value is a list of item holder rules.
Example:
```json
[
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
},
{
"type": "minecraft:occupancy_held_items_with_penalty",
"condition": {
"behavior": [
"minecraft:item_holder"
]
},
"penalty": {
"denominator": 16,
"numerator": 1
}
},
{
"type": "minecraft:fraction",
"condition": {
"data_components": [
"minecraft:bees"
]
},
"fraction": {
"denominator": 1,
"numerator": 1
}
}
]
```
## Item Holder Rules
- Renamed the `minecraft:fraction_with_occupancy_held_items` type to `minecraft:occupancy_held_items_with_penalty`.
- The `fraction` field was also renamed to `penalty` to show the use of the field more.
So if you had this:
```json
{
"type": "minecraft:fraction_with_occupancy_held_items",
"fraction": {
"denominator": 16,
"numerator": 1
}
}
```
You now have to use this instead:
```json
{
"type": "minecraft:occupancy_held_items_with_penalty",
"penalty": {
"denominator": 16,
"numerator": 1
}
}
```
# Fixes
- Updating the item holder rules retains the old rules on item stacks that already have contents ([#54](https://github.com/ErrorCraft/Itematic/issues/54))
beta
Itematic 0.3.0 Preview 2
0.3.0-preview.223 дек. 2025 г.42Minecraft: 1.20.5, 1.20.6fabric
Что нового
In this preview version a crash and visual bug regarding item holders was fixed and the block behaviour was expanded slightly.
# Changes
## Item Behaviour Components
### `minecraft:block`
- Added a new optional field called `passes`:
- Its value is a list of strings that allows its user to place a block given a certain context.
- It replaces the need to use the `minecraft:useable_on_block` behaviour component.
- The default value is `["block"]`.
- Possible values:
- `block`: Allows the user to place the block on another block.
- `fluid`: Allows the user to place the block on a fluid.
- Example from `minecraft:lily_pad`:
```json
{
"block": "minecraft:lily_pad",
"passes": [
"fluid"
]
}
```
# Fixes
- Fixed a crash when dropping all items from an item holder.
- Fixed the item bar display for item holders with capacities that don't have a value of 1.
beta
Itematic 0.3.0 Preview 1
0.3.0-preview.121 дек. 2025 г.42Minecraft: 1.20.5, 1.20.6fabric
Что нового
In this preview version the item holder behaviour was expanded and a new resource pack feature for item bars was added.
# Changes
## Assets
- Added textures for the item bar progress.
## Items
- Added the optional `item_bar_style` field to the item base.
- Has a default value of `minecraft:damage`.
- Its value is an id referencing an item bar style in a resource pack.
- This value can be changed for individual item stacks in the new `minecraft:item_bar_style` data component.
Example:
```json
{
"base": {
"item_bar_style": "minecraft:bundle",
"translation_key": "item.minecraft.bundle"
}
}
```
## Item Behaviour Components
### `minecraft:item_holder`
- Added a new field called `rules`:
- Its value is a list of item holder rules and determines whether an item stack can be added or not and decides how much room it takes.
- See the item holder rules section for more information.
- If no rule is picked, the inverse of its maximum stack size will be used instead.
- Its value for a specific item stack may be overwritten in the new `rules` field in the `minecraft:bundle_contents` data component.
An example from the `minecraft:bundle` item:
```json
[
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
},
{
"type": "minecraft:fraction_with_occupancy_held_items",
"condition": {
"behavior": [
"minecraft:item_holder"
]
},
"fraction": {
"denominator": 16,
"numerator": 1
}
},
{
"type": "minecraft:fraction",
"condition": {
"data_components": [
"minecraft:bees"
]
},
"fraction": {
"denominator": 1,
"numerator": 1
}
}
]
```
- Made changes to the `capacity` field:
- Its value is now a positive fraction that is capped at a value of 100 and determines how many 'full stacks' an item holder can hold.
- See the extras section for more information on fractions.
- Its value for a specific item stack may be overwritten with the new `minecraft:item_holder_capacity` data component.
Example:
```json
{
"denominator": 4,
"numerator": 1
}
```
## Data Components
- Added the following data components:
- `minecraft:item_bar_style`
- `minecraft:item_holder_capacity`
### `minecraft:bundle_contents`
- Now has an expanded form to make room for the new item holder rules.
- This form will always be used when saved.
- Fields:
- `rules`: A list of rules to apply to added item stacks. See the item holder rules section for more information.
- `items`: The same list of item stacks as before.
Example:
```json
{
"rules": [
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
}
],
"items": [
{
"item": "minecraft:stick",
"count": 4
},
{
"item": "minecraft:cobblestone",
"count": 6
}
]
}
```
### `minecraft:item_bar_style`
- Specified and used by the item base.
- If removed, will not display an item bar style under any circumstances.
- Its value is an id referencing an item bar style in a resource pack.
### `minecraft:item_holder_capacity`
- Specified and used by the `minecraft:item_holder` behaviour component.
- If removed, the item holder behaviour will no longer work.
- Its value is a positive fraction that is capped at a value of 100 and determines how many 'full stacks' an item holder can hold.
- See the extras section for more information on fractions and its format.
Examples:
- `{"numerator": 1, "denominator": 1}` (`1/1`) would be able to hold 64 item stacks of items stackable to 64.
- `{"numerator": 2, "denominator": 1}` (`2/1`) would be able to hold 128 item stacks of items stackable to 64.
- `{"numerator": 1, "denominator": 2}` (`1/2`) would be able to hold 32 item stacks of items stackable to 64.
## Item Bar Styles
An item bar style determines the visuals for the item bar that is displayed on top of an item stack.
They are specified under the `item_bar_style` folder in a resource pack.
Format:
- `color`: A colour provider. Determines the colour to apply over the texture based on its progress. See the colour providers section for more information.
- `progress`: A progress provider. Determines what texture to use from the `textures` field. See the progress providers section for more information.
- `textures`: A non-empty list of ids pointing to textures in the `minecraft:gui` atlas. The textures to use for the item bar.
- The texture used is determined by the `progress` field, with a value of 0 being the first element and a value of 1 being the last element in the list.
Example:
```json
{
"color": {
"type": "minecraft:hue_shift",
"end": 0,
"start": 120
},
"progress": "minecraft:damage",
"textures": [
"minecraft:item_bar/progress/13",
"minecraft:item_bar/progress/12",
"minecraft:item_bar/progress/11",
"minecraft:item_bar/progress/10",
"minecraft:item_bar/progress/9",
"minecraft:item_bar/progress/8",
"minecraft:item_bar/progress/7",
"minecraft:item_bar/progress/6",
"minecraft:item_bar/progress/5",
"minecraft:item_bar/progress/4",
"minecraft:item_bar/progress/3",
"minecraft:item_bar/progress/2",
"minecraft:item_bar/progress/1",
"minecraft:item_bar/progress/0"
]
}
```
### Colour Providers
A colour provider determines the colour to apply over the texture.
Format: A map with fields determined by the type in the `type` field.
Example:
```json
{
"type": "minecraft:hue_shift",
"end": 0,
"start": 120
}
```
#### `minecraft:constant`
- Always applies the specified colour over the texture.
- Fields:
- `color`: An integer. The colour to use.
#### `minecraft:hue_shift`
- Linearly shifts the hue from `start` to `end` depending on the progress. Always has a saturation and brightness of 100%.
- Fields:
- `start`: An integer ranging from 0 to 360. The start hue, used exactly when the progress is 0.
- `end`: An integer ranging from 0 to 360. The end hue, used exactly when the progress is 1.
### Progress Providers
A progress provider determines whether to display the item bar and what value to use that determines its texture.
#### `minecraft:damage`
- Displays when the item stack is damaged.
- Its value is the damage of the item stack divided by its durability.
#### `minecraft:item_holder_occupancy`
- Displays when the item stack's item holder contents are occupied.
- Its value is the occupancy calculated by the item stack's item holder contents.
## Item Holder Rules
An item holder rule determines whether an item stack can be added to an item holder or not and decides how much room it takes.
Its format is a map with fields determined by the `type` in the type field, as well as an optional `condition` field that is an item predicate.
All possible types are shown below.
Example:
```json
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
}
```
### `minecraft:fraction`
- Uses the specified fraction as its occupancy.
- Fields:
- `fraction`: A positive fraction that is capped at a value of 100. The fraction to use as its occupancy.
Example:
```json
{
"type": "minecraft:fraction",
"condition": {
"data_components": [
"minecraft:bees"
]
},
"fraction": {
"denominator": 1,
"numerator": 1
}
}
```
### `minecraft:fraction_with_occupancy_held_items`
- Uses the occupancy of the item stack's item holder item stacks with a penalty added on top of it.
- If the item stack does not have the `minecraft:item_holder` behaviour component or doesn't have the `minecraft:bundle_contents` data component, it will only add the penalty.
- Fields:
- `fraction`: A positive fraction that is capped at a value of 100. The penalty to add to the occupancy.
Example:
```json
{
"type": "minecraft:fraction_with_occupancy_held_items",
"condition": {
"behavior": [
"minecraft:item_holder"
]
},
"fraction": {
"denominator": 16,
"numerator": 1
}
}
```
### `minecraft:reject`
- Prevents the item stack from being added to the item holder altogether.
- Has no additional fields.
Example:
```json
{
"type": "minecraft:reject",
"condition": {
"items": "#minecraft:banned_bundle_items"
}
}
```
## Extras
### Fractions
- A way of representing fractions to keep accuracy of numbers where this is necessary.
- Fields:
- `numerator`: An integer used for the numerator of the fraction.
- `denominator`: An integer used for the denominator of the fraction.
- Fails to parse the denominator is 0.
Example:
```json
{
"denominator": 4,
"numerator": 1
}
```
### Item Predicates
- Added the following fields:
- `behavior`: An optional list of behaviour component types. Checks whether the item has the specified item behaviour components.
- `data_components`: An optional list of data component types. Checks whether the item stack has the specified data components.
- **Note: this field is temporary and will be removed sometime in 1.21 in favour of component predicates!**
release
Itematic 0.2.0
0.2.09 дек. 2025 г.41Minecraft: 1.20.5, 1.20.6fabric
Что нового
The very first content release for Itematic!
This version has a lot of changes regarding tools and weapons to expand their rules and ways to use them!
# Changes
## Entities
Mobs that don't have a base attack damage of 1 will now deal less damage when using weapons.
The only exception to this currently is for Piglins, Piglin Brutes and Zombified Piglins when they use one of the following items as a weapon:
- Golden Axe
- Golden Hoe
- Golden Pickaxe
- Golden Shovel
- Golden Sword
## Item Behaviour Components
The useable behaviour was merged together and removed from some other components.
This makes it so other behaviour components no longer start using an item on their own.
The tool behaviour was expanded to add more rules.
On top of that, the weapon behaviour now also has similar rules.
### `minecraft:shooter`
- This component no longer makes its user start using the item on its own and now requires `minecraft:useable`.
- An integer provider named `minecraft:shooter` was added that can be used in its place.
- Changed the `ammunition` and `held_ammunition` fields to be registry entry lists instead of tags.
- This means that these entries now require an additional `#` prefix to use a tag.
- For example, `minecraft:bow_ammunition` should now be `#minecraft:bow_ammunition`.
- This data is modifiable on specific item stacks with the `minecraft:shooter_ammunition` and `minecraft:shooter_held_ammunition` data components respectively.
So if you had this:
```json
{
"minecraft:shooter": {
"ammunition": "minecraft:bow_ammunition",
"held_ammunition": "minecraft:bow_ammunition",
"range": 15
}
}
```
You now have to use this instead:
```json
{
"minecraft:shooter": {
"ammunition": "#minecraft:bow_ammunition",
"held_ammunition": "#minecraft:bow_ammunition",
"range": 15
},
"minecraft:useable": {
"ticks": {
"type": "minecraft:shooter"
}
}
}
```
### `minecraft:throwable`
- This component no longer makes its user start using the item on its own when `draw_duration` is defined and now requires `minecraft:useable`.
- The `draw_duration` field is now only used to check whether its user has been using the item for the specified duration when they stop using the item.
- An integer provider named `minecraft:trident` was added that can be used in its place.
- Removed the `use_riptide_check` field as this is now part of an integer provider named `minecraft:trident` instead, which can be used in its place in `minecraft:useable`.
So if you had this:
```json
{
"minecraft:throwable": {
"angle_offset": 0.0,
"draw_duration": {
"min": 10
},
"speed": 2.5,
"use_riptide_check": true
}
}
```
You now have to use this instead:
```json
{
"minecraft:throwable": {
"angle_offset": 0.0,
"draw_duration": {
"min": 10
},
"speed": 2.5
},
"minecraft:useable": {
"ticks": {
"type": "minecraft:trident"
}
}
}
```
### `minecraft:tool`
- Made changes to the tool rules:
- Added an optional `item` field, which is an item predicate.
- Made the `blocks` field optional.
- Allowed 0 for the tool speed instead of it being strictly positive.
- These changes were made in favour of expanding the behaviour of the `preserve_item` field in `minecraft:damageable` as this can be controlled more precisely than a simple boolean and keeps the mining behaviour in this behaviour component.
- Note that this behaviour can still be combined with the `preserve_item` field to prevent the item from breaking and from being used as a tool altogether, which is likely preferred as an item stack may not necessarily be damaged by exactly one point.
An example based on the `minecraft:iron_pickaxe` item that sets the mining speed to 0 when the durability is 1:
```json
{
"minecraft:tool": {
"rules": [
{
"item": {
"predicates": {
"minecraft:damage": {
"durability": 1
}
}
},
"speed": 0.0
},
{
"blocks": "#minecraft:incorrect_for_iron_tool",
"correct_for_drops": false
},
{
"blocks": "#minecraft:mineable/pickaxe",
"correct_for_drops": true,
"speed": 6.0
}
]
}
}
```
### `minecraft:use_animation`
- Removed this component as it was not behaviour.
- It is now a field inside the `minecraft:useable` component instead.
### `minecraft:useable`
- Changed the `ticks` field to take a provider of a hard amount.
- This allows for more dynamic use durations that may be context-dependent.
- The field is optional. When it is not specified, the item will be used indefinitely.
- The field still allows a direct constant amount, just like before.
- This data is modifiable on specific item stacks with the `minecraft:use_duration` data component.
- See the *Use Integer Providers* section below for more information.
- Moved the value from `minecraft:use_animation` to this component in the optional `animation` field.
- Possible values:
- `block`
- `bow`
- `brush`
- `crossbow`
- `drink`
- `eat`
- `none`
- `spear`
- `spyglass`
- `toot_horn`
- If not specified, it will use `none` instead.
- This data is modifiable on specific item stacks with the `minecraft:use_animation` data component.
- Added an optional `passes` field, which is a list of strings that allows its user to start using the item given a certain context.
- The default value is `["normal"]`.
- Possible values:
- `normal`: Allows the user to start using the item as-is.
- `block`: Allows the user to start using the item when used on a block.
- `entity`: Allows the user to start using the item when used on an entity.
- This behaviour is used for the Brush to only start brushing when used on a block.
- Example from `minecraft:brush`:
```json
{
"minecraft:useable": {
"passes": [
"block"
],
"ticks": {
"type": "minecraft:constant",
"amount": 200
}
}
}
```
So if you had this:
```json
{
"minecraft:use_animation": "eat",
"minecraft:useable": {
"ticks": 32
}
}
```
You now have to use this instead:
```json
{
"minecraft:useable": {
"animation": "eat",
"ticks": 32
}
}
```
### `minecraft:weapon`
- Made changes to the `attack_damage` field:
- It now uses rules instead of a hard amount, similar to the mining speed rules in `minecraft:tool`.
- Format:
- `default_damage`: A non-negative double. The default damage to deal to an entity. This value is absolute and thus consistent for all weapon users, unless specified so by the rules.
- `rules`: A list of weapon rules. See the weapon rules section below for more information.
- Its value for a specific item stack may be overwritten with the new `minecraft:weapon_attack_damage` data component.
- Made changes to the `attack_speed` field:
- It is now a multiplier instead of a relative amount.
- Format: A non-negative double.
- Its value for a specific item stack may be overwritten with the new `minecraft:attack_speed_multiplier` data component.
- Note that while it can be set to 0, this does not prevent a Player from using the weapon altogether, just from loading the weapon to its full power. To prevent attacking, use an attack damage of 0 instead.
- Both of these fields are now taken into account separately and are no longer attribute modifiers.
An example based on the `minecraft:golden_sword` item that sets the damage to 0 when the durability is 1:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 4.0,
"rules": [
{
"add_base": false,
"damage": 0.0,
"item": {
"predicates": {
"minecraft:damage": {
"durability": 1
}
}
}
},
{
"add_base": true,
"damage": 3.0,
"entities": "#minecraft:proficient_with_golden_weapons"
}
]
},
"attack_speed": 0.4
}
}
```
## Data Components
Added the following data components:
- `minecraft:attack_speed_multiplier`
- `minecraft:shooter_ammunition`
- `minecraft:shooter_held_ammunition`
- `minecraft:use_animation`
- `minecraft:use_duration`
- `minecraft:weapon_attack_damage`
Also made changes to some existing data components.
### `minecraft:attack_speed_multiplier`
- Specified and used by the `minecraft:weapon` behaviour component.
- If removed, a multiplier of 1 will be used instead.
- Its value is a non-negative double.
### `minecraft:shooter_ammunition` and `minecraft:shooter_held_ammunition`
- Specified and used by the `minecraft:shooter` behaviour component.
- If removed, the `minecraft:shooter` behaviour will no longer work.
- Its value is an item, list of items or hash-prefixed item tag.
Examples:
```json
{
"minecraft:shooter_ammunition": "#minecraft:bow_ammunition"
}
```
```json
{
"minecraft:shooter_held_ammunition": "#minecraft:crossbow_ammunition"
}
```
### `minecraft:tool`
- Has the same changes as the `minecraft:tool` behaviour component.
### `minecraft:use_animation`
- Specified and used by the `minecraft:useable` behaviour component.
- If removed, the `none` animation will be used instead.
- Its value is the same one as the one specified previously in the `minecraft:use_animation` item component and are also specified in the `minecraft:useable` behaviour changes.
Examples:
```json
{
"minecraft:use_animation": "eat"
}
```
```json
{
"minecraft:use_animation": "drink"
}
```
### `minecraft:use_duration`
- Specified and used by the `minecraft:useable` behaviour component.
- If removed, the `minecraft:useable` behaviour will no longer work.
- The format is the same as the map specified in the `minecraft:useable` behaviour component, with one addition, that being that it allows for a single integer as another shorthand.
Examples:
- Constant duration, simplest form.
```json
{
"minecraft:use_duration": 10
}
```
- Constant duration, expanded form.
```json
{
"minecraft:use_duration": {
"ticks": 10
}
}
```
- Indefinite duration.
```json
{
"minecraft:use_duration": {}
}
```
- Constant duration as a provider. See the *Use Integer Providers* section further down for more information.
```json
{
"minecraft:use_duration": {
"ticks": {
"type": "minecraft:constant",
"amount": 10
}
}
}
```
### `minecraft:weapon_attack_damage`
- Specified and used by the `minecraft:weapon` behaviour component.
- If removed, the base attack damage from its user will be used instead.
- Its value is the same as the `attack_damage` field from the `minecraft:weapon` behaviour component.
## Actions
- Removed `minecraft:start_using_item`.
- Its behaviour is moved entirely to `minecraft:useable` and should be used in its place instead.
## Use Integer Providers
These providers are added so the use duration is not hardcoded for specific behaviour components by using different sources.
The integer provider type is determined by the `type` field and all types are shown below.
An integer provider may return an empty value, in which case the user will not start using the item.
### `minecraft:constant`
Uses the item for a constant duration.
#### Fields
- `amount`: A positive integer. How long to use the item for.
#### Example
```json
{
"type": "minecraft:constant",
"amount": 32
}
```
### `minecraft:playable`
Uses the `minecraft:playable` item behaviour component to get the use duration from the `minecraft:instrument` data component or from a default set of instruments as defined by `minecraft:playable` otherwise.
Has no additional fields.
#### Example
```json
{
"type": "minecraft:playable"
}
```
### `minecraft:shooter`
Uses the `minecraft:shooter` item behaviour component to use the item indefinitely if the user is either holding ammunition as defined by the `minecraft:shooter_held_ammunition` data component or has ammunition in their inventory as defined by the `minecraft:shooter_ammunition` data component.
Has no additional fields.
#### Example
```json
{
"type": "minecraft:shooter"
}
```
### `minecraft:trident`
Uses the item indefinitely if the item stack has the Riptide enchantment and is either not damageable or not in a broken state and if its user is touching water or rain.
Has no additional fields.
#### Example
```json
{
"type": "minecraft:trident"
}
```
### `minecraft:condition`
Uses the item for the ticks specified in the `amount` field if the specified condition passes.
#### Fields
- `amount`: An integer provider. How long to use the item for if the condition passes.
- `condition`: An item predicate. The condition to pass before its user can start using the item.
#### Example
```json
{
"type": "minecraft:condition",
"amount": 100,
"condition": {
"count": {
"min": 3
}
}
}
```
## Weapon Rules
A weapon rule dictates what damage amount should be used and whether it should add the entity's base attack damage on top of the weapon's damage or not.
### Fields
- `entities`: An optional entity type, list of entity types or hash-prefixed entity type tag. When specified, has to be used by the entity types specified in order for the rule to be used.
- `item`: An optional item predicate. When specified, the item stack has to match the predicate in order for the rule to be used.
- `damage`: An optional non-negative double. When specified, will be used as the weapon's damage instead of the default amount.
- `add_base`: An optional boolean. When specified, determines whether to add its user's base `minecraft:generic.attack_damage` attribute value to the weapon's damage.
### Example
```json
{
"add_base": true,
"damage": 3.0,
"entities": "#minecraft:proficient_with_golden_weapons"
}
```
beta
Itematic 0.2.0 Preview 3
0.2.0-preview.35 дек. 2025 г.32Minecraft: 1.20.5, 1.20.6fabric
Что нового
In this preview version the weapon item behaviour was expanded significantly, with some changes to entity behaviour on top of it.
# Changes
## Entities
- Mobs that don't have a base attack damage of 1 will now deal less damage when using weapons.
- The only exception to this currently is for Piglins, Piglin Brutes and Zombified Piglins when they use one of the following items as a weapon:
- Golden Axe
- Golden Hoe
- Golden Pickaxe
- Golden Shovel
- Golden Sword
## Item Behaviour Components
### `minecraft:weapon`
- Made changes to the `attack_damage` field:
- It now uses rules instead of a hard amount, similar to the mining speed rules in `minecraft:tool`.
- Format:
- `default_damage`: A non-negative double. The default damage to deal to an entity. This value is absolute and thus consistent for all weapon users, unless specified so by the rules.
- `rules`: A list of weapon rules. See the weapon rules section below for more information.
- Its value for a specific item stack may be overwritten with the new `minecraft:weapon_attack_damage` data component.
- Made changes to the `attack_speed` field:
- It is now a multiplier instead of a relative amount.
- Format: A non-negative double.
- Its value for a specific item stack may be overwritten with the new `minecraft:attack_speed_multiplier` data component.
- Note that while it can be set to 0, this does not prevent a Player from using the weapon altogether, just from loading the weapon to its full power. To prevent attacking, use an attack damage of 0 instead.
- Both of these fields are now taken into account separately and are no longer attribute modifiers.
An example based on the `minecraft:golden_sword` item that sets the damage to 0 when the durability is 1:
```json
{
"minecraft:weapon": {
"attack_damage": {
"default_damage": 4.0,
"rules": [
{
"add_base": false,
"damage": 0.0,
"item": {
"predicates": {
"minecraft:damage": {
"durability": 1
}
}
}
},
{
"add_base": true,
"damage": 3.0,
"entities": "#minecraft:proficient_with_golden_weapons"
}
]
},
"attack_speed": 0.4
}
}
```
## Data Components
- Added the following data components:
- `minecraft:attack_speed_multiplier`
- `minecraft:weapon_attack_damage`
### `minecraft:attack_speed_multiplier`
- Specified and used by the `minecraft:weapon` behaviour component.
- If removed, a multiplier of 1 will be used instead.
- Its value is a non-negative double.
### `minecraft:weapon_attack_damage`
- Specified and used by the `minecraft:weapon` behaviour component.
- If removed, the base attack damage from its user will be used instead.
- Its value is the same as the `attack_damage` field from the `minecraft:weapon` behaviour component.
Example:
```json
{
"default_damage": 4.0,
"rules": [
{
"add_base": true,
"damage": 3.0,
"entities": "#minecraft:proficient_with_golden_weapons"
}
]
}
```
## Weapon Rules
A weapon rule dictates what damage amount should be used and whether it should add the entity's base attack damage on top of the weapon's damage or not.
### Fields
- `entities`: An optional entity type, list of entity types or hash-prefixed entity type tag. When specified, has to be used by the entity types specified in order for the rule to be used.
- `item`: An optional item predicate. When specified, the item stack has to match the predicate in order for the rule to be used.
- `damage`: An optional non-negative double. When specified, will be used as the weapon's damage instead of the default amount.
- `add_base`: An optional boolean. When specified, determines whether to add its user's base `minecraft:generic.attack_damage` attribute value to the weapon's damage.
### Example
```json
{
"add_base": true,
"damage": 3.0,
"entities": "#minecraft:proficient_with_golden_weapons"
}
```
beta
Itematic 0.2.0 Preview 2
0.2.0-preview.223 нояб. 2025 г.34Minecraft: 1.20.5, 1.20.6fabric
Что нового
Time for another content preview for Itematic.
In this preview version the tool item behaviour was expanded slightly.
# Changes
## Item Behaviour Components
### `minecraft:tool`
- Made changes to the tool rules:
- Added an optional `item` field, which is an item predicate that checks the item stack that is used as a tool.
- Made the `blocks` field optional.
- Allowed 0 for the tool speed instead of it being strictly positive.
- These changes were made in favour of expanding the behaviour of the `preserve_item` field in `minecraft:damageable` as this can be controlled more precisely than a simple boolean and keeps the mining behaviour in this behaviour component.
- Note that this behaviour can still be combined with the `preserve_item` field to prevent the item from breaking and from being used as a tool altogether, which is likely preferred as an item stack may not necessarily be damaged by exactly one point.
An example based on the `minecraft:iron_pickaxe` item that sets the mining speed to 0 when the durability is 1:
```json
{
"minecraft:tool": {
"rules": [
{
"item": {
"predicates": {
"minecraft:damage": {
"durability": 1
}
}
},
"speed": 0.0
},
{
"blocks": "#minecraft:incorrect_for_iron_tool",
"correct_for_drops": false
},
{
"blocks": "#minecraft:mineable/pickaxe",
"correct_for_drops": true,
"speed": 6.0
}
]
}
}
```
## Data Components
### `minecraft:tool`
- Has the same changes as the `minecraft:tool` behaviour component.
beta
Itematic 0.2.0 Preview 1
0.2.0-preview.121 нояб. 2025 г.40Minecraft: 1.20.5, 1.20.6fabric
Что нового
The very first content preview for Itematic!
In this preview version the useable item behaviour was unified.
# Changes
## Item Behaviour Components
The useable behaviour was merged together and removed from some other components.
This makes it so other behaviour components no longer start using an item on their own.
### `minecraft:shooter`
- This component no longer makes its user start using the item on its own and now requires `minecraft:useable`.
- An integer provider named `minecraft:shooter` was added that can be used in its place.
- Changed the `ammunition` and `held_ammunition` fields to be registry entry lists instead of tags.
- This means that these entries now require an additional `#` prefix to use a tag.
- For example, `minecraft:bow_ammunition` should now be `#minecraft:bow_ammunition`.
- This data is modifiable on specific item stacks with the `minecraft:shooter_ammunition` and `minecraft:shooter_held_ammunition` data components respectively.
So if you had this:
```json
{
"minecraft:shooter": {
"ammunition": "minecraft:bow_ammunition",
"held_ammunition": "minecraft:bow_ammunition",
"range": 15
}
}
```
You now have to use this instead:
```json
{
"minecraft:shooter": {
"ammunition": "#minecraft:bow_ammunition",
"held_ammunition": "#minecraft:bow_ammunition",
"range": 15
},
"minecraft:useable": {
"ticks": {
"type": "minecraft:shooter"
}
}
}
```
### `minecraft:throwable`
- This component no longer makes its user start using the item on its own when `draw_duration` is defined and now requires `minecraft:useable`.
- The `draw_duration` field is now only used to check whether its user has been using the item for the specified duration when they stop using the item.
- An integer provider named `minecraft:trident` was added that can be used in its place.
- Removed the `use_riptide_check` field as this is now part of an integer provider named `minecraft:trident` instead, which can be used in its place in `minecraft:useable`.
So if you had this:
```json
{
"minecraft:throwable": {
"angle_offset": 0.0,
"draw_duration": {
"min": 10
},
"speed": 2.5,
"use_riptide_check": true
}
}
```
You now have to use this instead:
```json
{
"minecraft:throwable": {
"angle_offset": 0.0,
"draw_duration": {
"min": 10
},
"speed": 2.5
},
"minecraft:useable": {
"ticks": {
"type": "minecraft:trident"
}
}
}
```
### `minecraft:use_animation`
- Removed this component as it was not behaviour.
- It is now a field inside the `minecraft:useable` component instead.
### `minecraft:useable`
- Changed the `ticks` field to take a provider of a hard amount.
- This allows for more dynamic use durations that may be context-dependent.
- The field is optional. When it is not specified, the item will be used indefinitely.
- The field still allows a direct constant amount, just like before.
- This data is modifiable on specific item stacks with the `minecraft:use_duration` data component.
- See the *Use Integer Providers* section further down for more information.
- Moved the value from `minecraft:use_animation` to this component in the optional `animation` field.
- Possible values:
- `block`
- `bow`
- `brush`
- `crossbow`
- `drink`
- `eat`
- `none`
- `spear`
- `spyglass`
- `toot_horn`
- If not specified, it will use `none` instead.
- This data is modifiable on specific item stacks with the `minecraft:use_animation` data component.
- Added an optional `passes` field, which is a list of strings that allows its user to start using the item given a certain context.
- The default value is `["normal"]`.
- Possible values:
- `normal`: Allows the user to start using the item as-is.
- `block`: Allows the user to start using the item when used on a block.
- `entity`: Allows the user to start using the item when used on an entity.
- This behaviour is used for the Brush to only start brushing when used on a block.
- Example from `minecraft:brush`:
```json
{
"minecraft:useable": {
"passes": [
"block"
],
"ticks": {
"type": "minecraft:constant",
"amount": 200
}
}
}
```
So if you had this:
```json
{
"minecraft:use_animation": "eat",
"minecraft:useable": {
"ticks": 32
}
}
```
You now have to use this instead:
```json
{
"minecraft:useable": {
"animation": "eat",
"ticks": 32
}
}
```
## Data Components
- Added the following data components:
- `minecraft:shooter_ammunition`
- `minecraft:shooter_held_ammunition`
- `minecraft:use_animation`
- `minecraft:use_duration`
### `minecraft:shooter_ammunition` and `minecraft:shooter_held_ammunition`
- Specified and used by the `minecraft:shooter` behaviour component.
- If removed, the `minecraft:shooter` behaviour will no longer work.
- Its value is an item, list of items or hash-prefixed item tag.
Examples:
```json
{
"minecraft:shooter_ammunition": "#minecraft:bow_ammunition"
}
```
```json
{
"minecraft:shooter_held_ammunition": "#minecraft:crossbow_ammunition"
}
```
### `minecraft:use_animation`
- Specified and used by the `minecraft:useable` behaviour component.
- If removed, the `none` animation will be used instead.
- Its value is the same one as the one specified previously in the `minecraft:use_animation` item component and are also specified in the `minecraft:useable` behaviour changes.
Examples:
```json
{
"minecraft:use_animation": "eat"
}
```
```json
{
"minecraft:use_animation": "drink"
}
```
### `minecraft:use_duration`
- Specified and used by the `minecraft:useable` behaviour component.
- If removed, the `minecraft:useable` behaviour will no longer work.
- The format is the same as the map specified in the `minecraft:useable` behaviour component, with one addition, that being that it allows for a single integer as another shorthand.
Examples:
- Constant duration, simplest form.
```json
{
"minecraft:use_duration": 10
}
```
- Constant duration, expanded form.
```json
{
"minecraft:use_duration": {
"ticks": 10
}
}
```
- Indefinite duration.
```json
{
"minecraft:use_duration": {}
}
```
- Constant duration as a provider. See the *Use Integer Providers* section further down for more information.
```json
{
"minecraft:use_duration": {
"ticks": {
"type": "minecraft:constant",
"amount": 10
}
}
}
```
## Actions
- Removed `minecraft:start_using_item`.
- Its behaviour is moved entirely to `minecraft:useable` and should be used in its place instead.
## Use Integer Providers
These providers are added so the use duration is not hardcoded for specific behaviour components by using different sources.
The integer provider type is determined by the `type` field and all types are shown below.
An integer provider may return an empty value, in which case the user will not start using the item.
### `minecraft:constant`
Uses the item for a constant duration.
#### Fields
- `amount`: A positive integer. How long to use the item for.
#### Example
```json
{
"type": "minecraft:constant",
"amount": 32
}
```
### `minecraft:playable`
Uses the `minecraft:playable` item behaviour component to get the use duration from the `minecraft:instrument` data component or from a default set of instruments as defined by `minecraft:playable` otherwise.
Has no additional fields.
#### Example
```json
{
"type": "minecraft:playable"
}
```
### `minecraft:shooter`
Uses the `minecraft:shooter` item behaviour component to use the item indefinitely if the user is either holding ammunition as defined by the `minecraft:shooter_held_ammunition` data component or has ammunition in their inventory as defined by the `minecraft:shooter_ammunition` data component.
Has no additional fields.
#### Example
```json
{
"type": "minecraft:shooter"
}
```
### `minecraft:trident`
Uses the item indefinitely if the item stack has the Riptide enchantment and is either not damageable or not in a broken state and if its user is touching water or rain.
Has no additional fields.
#### Example
```json
{
"type": "minecraft:trident"
}
```
### `minecraft:condition`
Uses the item for the ticks specified in the `amount` field if the specified condition passes.
#### Fields
- `amount`: An integer provider. How long to use the item for if the condition passes.
- `condition`: An item predicate. The condition to pass before its user can start using the item.
#### Example
```json
{
"type": "minecraft:condition",
"amount": 100,
"condition": {
"count": {
"min": 3
}
}
}
```
release
Itematic 0.1.4
0.1.417 нояб. 2025 г.42Minecraft: 1.20.5, 1.20.6fabric
Что нового
Fixes the inability to break blocks when not holding an item.
## Fixes
- Blocks cannot be broken unless holding an item ([#45](https://github.com/ErrorCraft/Itematic/issues/45))
release
Itematic 0.1.3
0.1.38 нояб. 2025 г.37Minecraft: 1.20.5, 1.20.6fabric
Что нового
Fixes an item duplication bug regarding item tags.
## Fixes
- Crafting Duplicates Items ([#41](https://github.com/ErrorCraft/Itematic/issues/41))
release
Itematic 0.1.2
0.1.26 нояб. 2025 г.39Minecraft: 1.20.5, 1.20.6fabric
Что нового
Fixes a duplication bug.
## Fixes
- Item Dupe custom items ([#39](https://github.com/ErrorCraft/Itematic/issues/39))
release
Itematic 0.1.1
0.1.15 нояб. 2025 г.32Minecraft: 1.20.5, 1.20.6fabric
Что нового
Fixes the game crashing when opening the inventory.
## Fixes
- Game crash upon opening Inventory ([#34](https://github.com/ErrorCraft/Itematic/issues/34))
beta
Itematic 0.1.1 Preview 1
0.1.1-preview.14 нояб. 2025 г.35Minecraft: 1.20.5, 1.20.6fabric
Что нового
Fixes the game crashing when opening the inventory.
release
Itematic 0.1.0
0.1.027 окт. 2025 г.93Minecraft: 1.20.5, 1.20.6fabric
Что нового
Initial release.