Minecraft Enchanted Textures Tutorial
Learn how to make enchantment specific textures
This is what you’ll get after this tutorial

Before You Start
- Resources
- What you’ll Need
- Text Editor (VS Code, NotePad++, etc)
- Minecraft version 1.21.5+ (older versions do not support data driven item models)
- Basic understanding of json
Getting Started
Below is the folder structure used in this tutorial.
It is already organized so you can add more enchantments later.
project_root/
├── pack.mcmeta
├── pack.png
│
└── assets/
└── minecraft/
├── models/
│ └── item/
│ └── sword/
│ └── diamond/
│ └── fire_aspect.json
│
├── textures/
│ └── item/
│ └── sword/
│ ├── diamond/
│ │ └── diamond_sword.png
│ │
│ └── shared/
│ ├── fire_aspect.png
│ └── fire_aspect.png.mcmeta
│
└── items/
└── diamond_sword.json
pack.mcmeta
Create pack.mcmeta at the root of your project.
Because this tutorial uses data-driven item models, the resource
pack must target Minecraft 1.21.5 or newer.
The min_format value of 55 corresponds to Minecraft 1.21.5,
which is when this feature was introduced.
{
"pack": {
"description": "your pack description",
"min_format": 55
}
}
pack.png
pack.png can be any square PNG image.
This is just the icon shown in the resource pack menu.
Enchantment Texture
Next, add the texture that represents the enchantment effect.
In this example, the Fire Aspect texture is animated, so it uses a sprite sheet.
You can download my sprite sheet here: fire_aspect.png
Place the file here:
assets/minecraft/textures/item/sword/shared/
Animated Texture
If your texture is animated, create a file with the same name +
.mcmeta:
fire_aspect.png.mcmeta
{
"animation": {
"frametime": 2
}
}
Minecraft runs at 20 ticks per second, so:
frametime: 20= 1 secondframetime: 0.1= 0.1 seconds per frame
Item Model (Enchantment Overlay)
Now we create the model that combines the base sword with the enchantment texture
Create this file:
assets/minecraft/models/item/sword/diamond/fire_aspect.json
This model uses the default handheld sword model and renders two texture layers
layer0renders firstlayer1renders on top of 0
In my texture i want the Fire Aspect under the sword texture but if you have custom texture the layer order might be diffrent
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "minecraft:item/sword/shared/fire_aspect",
"layer1": "minecraft:item/sword/diamond/diamond_sword"
}
}
Note: Texture paths never include .png
Enchantment Detection
This part tels Minecraft when to switch models based on enchantments
Create this file:
assets/minecraft/items/diamond_sword.json
WARNING JSON does not support comments. The comments below are for explanation only and must be removed in the final file.
{
"model": {
// Composite type allows combining multiple models
"type": "minecraft:composite",
"models": [
// Base model: render the default diamond sword
{
"type": "minecraft:model",
"model": "minecraft:item/diamond_sword"
},
// Conditional model: check if item has Fire Aspect enchantment
{
"type": "minecraft:condition",
"property": "minecraft:component",
"predicate": "minecraft:enchantments",
// Define which enchantment to look for
"value": [
{
"enchantments": "minecraft:fire_aspect",
"levels": {"min": 1}
}
],
// If enchantment is present: render the fire aspect overlay model
"on_true": {"type": "minecraft:model", "model": "minecraft:item/sword/diamond/fire_aspect"},
"on_false": {"type": "minecraft:empty"}
}
]
}
}
Adding More Enchantments
To add additional enchantments:
- Copy the entire
minecraft:conditionblock including the brackets - Paste it directly after the previous one
- Change:
- Enchantment ID
- Model path
Packaging
Zip the following files:
assets/
pack.mcmeta
pack.png
You can rename the .zip file however you want
Testing In Game
- Launch Minecraft
- Go to Options → Resource Packs
- Click Open Pack Folder
- Drag your
.zipfile into the folder - Enable the pack
- Enter a world and enchant a diamond sword with Fire Aspect
If everything is correct, the texture should change.
Troubleshooting
- Press F3 + T to reload resource packs
- Check file paths and enchantment IDs