
Itematic
A mod that adds data-driven items to the game, and much more!
Список изменений
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!

Changes
- Removed armour materials entirely.
- Its values are now inlined in the
minecraft:armoritem behaviour component instead.
- Its values are now inlined in the
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
basefield todisplay.- It only contains data related to the item's display.
- Renamed the
componentsfield tobehavior.- 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_modifiersfield to the item.- Its value is the same as the list form of the
minecraft:attribute_modifiersdata component.
- Its value is the same as the list form of the
- Added the
modelfield 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_modeldata component.
So if you had this:
{
"base": {
"translation_key": "item.minecraft.stick"
},
"components": {
"minecraft:fuel": {
"ticks": 100
},
"minecraft:stackable": 64
}
}
You now have to use this instead:
{
"display": {
"translation_key": "item.minecraft.stick",
"model": "minecraft:stick"
},
"behavior": {
"minecraft:fuel": {
"ticks": 100
},
"minecraft:stackable": 64
}
}
- Added the optional
tooltip_stylefield 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_styledata component.
- Added the
minecraft:before_death_holderitem 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_modifiersfield on the item and entries should be moved there.
- This has been replaced with the
So if you had this:
{
"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:
{
"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_modifiersfield on the item and entries should be moved there.
- This has been replaced with the
So if you had this:
{
"behavior": {
"minecraft:armor": {
"attribute_id": "minecraft:armor.chestplate",
"defense": 8,
"knockback_resistance": 0.0,
"toughness": 2.0
}
}
}
You now have to use this instead:
{
"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_holderitem event. - To replicate the previous behaviour, the
minecraft:clear_status_effectsandminecraft:add_status_effectsactions can be used. - Note that this means that the
minecraft:death_protectiondata 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_protectiondata component from vanilla in 1.21.3, which the action system accommodates for with even more possibilities.
- This has been replaced with the new
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_itemfield toremainderinminecraft:useable.
minecraft:cooldown
- Added an optional
groupfield, which is the id to use as the cooldown group. If not specified, it will use the item id
minecraft:entity
- Added an optional
passesfield, 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:
{
"allow_item_data": true,
"entity": {
"type": "minecraft:pig"
},
"passes": [
"block",
"fluid"
]
}
minecraft:equipment
- Updated to match the
minecraft:equippabledata component. - Note that the
dispensablefield is unused as it has been replaced by theminecraft:dispensableitem behaviour.
minecraft:food
- Removed the
effectsfield. - This should now be applied with the
minecraft:consume_itemorminecraft:eat_itemitem event combined with predicates and the newminecraft:add_status_effectsaction.
So if you had this:
{
"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:
{
"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
remainderfield, which is the item stack to leave when used as a fuel. - This replaces the
minecraft:recipe_remainderitem behaviour that was used previously for this.
Example:
{
"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
remainderfield, which is the item stack to leave when finished using, whether instantaneous or over a specified duration.
Example:
{
"animation": "eat",
"remainder": {
"id": "minecraft:bowl",
"count": 1
},
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
- Changed the way the use duration in the
ticksfield works: - If not specified, the item will be used instantly instead of being used indefinitely.
- To reproduce the previous behaviour, use the new
minecraft:indefiniteuse 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:
{
"minecraft:useable": {
"animation": "block"
}
}
You now have to use this instead:
{
"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_resistantfrom vanilla. - Entries are datafixed properly.
- This has been replaced by
- Made the following data components unused:
minecraft:death_protection- This has been replaced by the
minecraft:before_death_holderitem event to accommodate more actions. - The reason the data component itself still exists is to not break existing worlds.
- This has been replaced by the
minecraft:equippable
- No longer uses the
dispensablefield as it has been replaced by theminecraft:dispensableitem behaviour.
minecraft:glider
- Now has an optional
useable_iffield, 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
ticksfield, making it consistent with the way it is used in theminecraft:useablebehaviour.
So if you had this:
{
"ticks": {
"type": "minecraft:constant",
"amount": 32
}
}
You now have to use this instead:
{
"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:indefiniteuse duration provider instead.
So if you had this:
{}
You must now use this:
{
"type": "minecraft:indefinite"
}
- A positive integer can still be used as a direct usage of the
minecraft:constantuse duration provider.
minecraft:weapon_attack_damage
- When determining whether to add the base
minecraft:attack_damageattribute or not, it now defaults totrueinstead offalseand must be explicitly set byrulesaccordingly.
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:
{
"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
variantfield fromminecraft:boatas its variant has been split up into separate entity types.
So if you had this:
{
"type": "minecraft:boat",
"variant": "minecraft:oak"
}
You must now use this instead:
{
"type": "minecraft:oak_boat"
}
- Removed the
prevent_spawn_from_riptidefield fromminecraft:trident.
Recipes
- Added the following recipe types:
minecraft:brewing_amplifyminecraft:brewing_modify
- Removed the following recipe types:
minecraft:item_coloring- This has been replaced by
minecraft:crafting_transmutefrom vanilla.
- This has been replaced by
- Added remainders to ingredients.
- Replaces the
minecraft:recipe_remainderitem 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.
- Replaces the
Example:
{
"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.
- Its default value is
- A remainder may be specified for the reagent that is left in the slot or dropped in the world after brewing.
Example:
{
"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:
{
"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:
{
"type": "minecraft:first_to_pass_condition",
"entries": [
{
"color": {
"type": "minecraft:constant",
"color": -43948
},
"condition": {
"progress": 1.0
}
}
],
"fallback": {
"type": "minecraft:constant",
"color": -9402369
}
}