Tags
Creators
Details
0.5.0+1.21.3
Compatibility
Required content
Changes
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
}
}
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:ZclAAHfk:w6lKhzpH"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:ZclAAHfk:w6lKhzpH"
}

