A tool designed to convert Minecraft resource packs from older versions (1.14) to 1.21.4+ format.
This tool primarily handles the conversion of item model JSON formats, helping creators quickly update their resource packs.
Mode 1: Custom Model Data Conversion
Old format (1.14 ~ 1.21.3):
Code (Text):
{
"parent": "item/handheld",
"textures": {
"layer0": "item/stick"
},
"overrides": [
{"predicate": {"custom_model_data": 19002}, "model":"custom_items/cat_hat/cat_hat_black"}
]
}
/give @s minecraft:stick{CustomModelData:19002}
New format (1.21.4+):
Code (Text):
{
"model": {
"type": "range_dispatch",
"property": "custom_model_data",
"fallback": {
"type": "model",
"model": "item/stick"
},
"entries": [
{
"threshold": 19002,
"model": {
"type": "model",
"model": "custom_items/cat_hat/cat_hat_black"
}
}
]
}
}
/give @p minecraft:stick[custom_model_data={floats:[19002]}]
Mode 2: Item Model Conversion
Original file (assets/minecraft/models/item/stick.json):
Code (Text):
{
"parent": "item/handheld",
"textures": {
"layer0": "item/stick"
},
"overrides": [
{"predicate": {"custom_model_data": 19002}, "model":"custom_items/cat_hat/cat_hat_black"},
{"predicate": {"custom_model_data": 19003}, "model":"custom_items/cat_hat/cat_hat_british_shorthair"}
]
}
/give @p minecraft:stick[custom_model_data={floats:[19002]}]
/give @p minecraft:stick[custom_model_data={floats:[19003]}]
Converted files:
1. assets/minecraft/items/custom_items/cat_hat/cat_hat_black.json:
Code (Text):
{
"model": {
"type": "model",
"model": "custom_items/cat_hat/cat_hat_black"
}
}
/give @s itemname[item_model="custom_items/cat_hat/cat_hat_black"]
2. assets/minecraft/items/custom_items/cat_hat/cat_hat_british_shorthair.json:
Code (Text):
{
"model": {
"type": "model",
"model": "custom_items/cat_hat/cat_hat_british_shorthair"
}
}
/give @s itemname[item_model="custom_items/cat_hat/cat_hat_british_shorthair"]
Mode 3: Damage Conversion
This mode is designed specifically for pure damage-based conversions.
If your initial file is in a custom model data + damage format,
please use Mode 1 or Mode 2 instead.
Old format (1.14 ~ 1.21.3):
Code (Text):
{
"parent": "item/handheld",
"textures": {
"layer0": "item/wood_sword"
},
"overrides": [
{"predicate": {"damaged": 1, "damage": 0.25}, "model":"custom_items/wood_sword1"},
{"predicate": {"damaged": 1, "damage": 0.50}, "model":"custom_items/wood_sword2"}
]
}
/give @s minecraft:wood_sword{damage:30}
/give @s minecraft:wood_sword{damage:45}
New format (1.21.4+):
Code (Text):
{
"model": {
"type": "range_dispatch",
"property": "damage",
"fallback": {
"type": "model",
"model": "items/wood_sword"
},
"entries": [
{
"threshold": 0.25,
"model": {
"type": "model",
"model": "custom_items/wood_sword1"
}
},
{
"threshold": 0.50,
"model": {
"type": "model",
"model": "custom_items/wood_sword2"
}
}
]
}
}
/give @s minecraft:wood_sword[damage=30]
/give @s minecraft:wood_sword[damage=45]
Requirements
- Python 3.6 or newer
- pip (Python package manager)
Automatically installed packages:
- rich (for progress bar display)
- pyinstaller (If you are building the executable)
Detailed Usage Steps
1. Prepare resource pack:
Place your complete resource pack content in the input folder
Maintain the original folder structure
2. Run conversion:
Windows: Double-click run.py or use command python run.py
Mac/Linux: Execute python3 run.py in terminal
3. View results:
The program generates a timestamped ZIP file (e.g., converted_20240326_123456.zip)
This ZIP file can be directly used as a Minecraft 1.21.4+ resource pack
Conversion Rules
1. Two Conversion Modes:
- Custom Model Data Mode: Updates to 1.21.4+ new item model format
- Item Model Mode: Creates individual model files based on CustomModelData paths
2. Path Handling:
- minecraft:item/* paths maintain their prefix
- item/* paths maintain original format
- namespace : path format is preserved in item model conversion
- Automatically adjusts item model storage location
3. Folder Structure Adjustment:
- Moves files from models/item/* to items/*
- Creates subdirectories based on model paths in Item Model mode
- Preserves other folder structures
Important Notes
1. Always backup your original resource pack before conversion
2. Ensure correct input resource pack structure
3. Test all custom item models in-game after conversion
4. Check error messages if any issues are found
Troubleshooting
If you encounter issues, check:
1. Input folder structure correctness
2. JSON file format validity
3. Python version compatibility
4. File read/write permissions
Contributing
Issues and Pull Requests are welcome to help improve this tool. Main areas for contribution:
- Support for more model formats
- Conversion efficiency improvements
- Error handling enhancements
- User experience improvements
License
GNU General Public License v3.0