README LANGUAGES [ English | 中文 ]
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.
Important
This converter only processes JSON files located in the models/item
directory that include Custom Model Data
or Custom Model Data + Damage
.
It does not handle JSON files in other directories; you will need to manually manage files outside this directory (in most cases, no additional processing is required).
This approach minimizes unexpected issues and ensures the smallest possible difference between the converted resource pack and the original.
If you find that JSON files under the models/item
directory containing Custom Model Data
or Custom Model Data + Damage
do not work correctly after conversion, this is indeed a mistake on the converter's part. Please make sure to report it to me.
However, if the issue arises from files outside the models/item
directory, or from files within models/item
that do not contain Custom Model Data
or Damage
, this is not a fault of the converter, as it does not process those files.
- Supports two conversion modes:
- Custom Model Data Conversion: Converts old CustomModelData format to new format
- Item Model Conversion: Converts to individual model files based on CustomModelData paths
- Damage Model Conversion: Transforms damage-based model predicates
- Automatically adjusts folder structure (
assets/minecraft/models/item/*
→assets/minecraft/items/*
) - Intelligently handles
minecraft:item/
,minecraft:block/
anditem/
path prefixes - Batch processes entire resource packs
- Real-time conversion progress display
- Automatically packages into a ready-to-use resource pack
- GUI interface for easy operation
- Supports both English and Chinese interfaces
- Input: Minecraft resource packs from 1.14 to 1.21.3
- Output: Minecraft 1.21.4+ compatible format
- Download the latest release from the Releases page
- Run the executable file (MCPackConverter.exe)
- Choose your preferred language (English/中文)
- Use the GUI to:
- Select conversion mode
- Select folder or ZIP file containing your resource pack
- Click "Start Convert" to begin conversion
- Find the converted resource pack in the output folder
- Clone the repository:
git clone https://github.com/BrilliantTeam/Minecraft-ResourcePack-Migrator
cd minecraft-resourcepack-migrator
- Install requirements:
pip install rich
- Run the program:
- GUI Version:
python gui_app.py
- Command Line Version:
python run.py
- GUI Version:
- Clone the repository and install requirements:
git clone https://github.com/BrilliantTeam/Minecraft-ResourcePack-Migrator
cd minecraft-resourcepack-migrator
pip install pyinstaller rich
- Run the build script:
python build.py
- The executable will be available in the
dist
folder
Note: Building the executable requires administrator privileges.
Old format (1.14 ~ 1.21.3):
{
"parent": "item/handheld",
"textures": {
"layer0": "item/stick"
},
"overrides": [
{"predicate": {"custom_model_data": 19002}, "model":"custom_items/cat_hat/cat_hat_black"}
]
}
Command: /give @s minecraft:stick{CustomModelData:19002}
New format (1.21.4+):
{
"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"
}
}
]
}
}
Command: /give @p minecraft:stick[custom_model_data={floats:[19002]}]
Original file (assets/minecraft/models/item/stick.json
):
{
"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"}
]
}
Command: /give @p minecraft:stick[custom_model_data={floats:[19002]}]
Command: /give @p minecraft:stick[custom_model_data={floats:[19003]}]
Converted files:
assets/minecraft/items/custom_items/cat_hat/cat_hat_black.json
:
{
"model": {
"type": "model",
"model": "custom_items/cat_hat/cat_hat_black"
}
}
Command: /give @s itemname[item_model="custom_items/cat_hat/cat_hat_black"]
assets/minecraft/items/custom_items/cat_hat/cat_hat_british_shorthair.json
:
{
"model": {
"type": "model",
"model": "custom_items/cat_hat/cat_hat_british_shorthair"
}
}
Command: /give @s itemname[item_model="custom_items/cat_hat/cat_hat_british_shorthair"]
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):
{
"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"}
]
}
Command: /give @s minecraft:wood_sword{damage:30}
Command: /give @s minecraft:wood_sword{damage:45}
New format (1.21.4+):
{
"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"
}
}
]
}
}
Command: /give @s minecraft:wood_sword[damage=30]
Command: /give @s minecraft:wood_sword[damage=45]
- Python 3.6 or newer
- pip (Python package manager)
Automatically installed packages:
- rich (for progress bar display)
- pyinstaller (if building executable)
-
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
-
Path Handling:
minecraft:item/*
paths maintain their prefixitem/*
paths maintain original formatnamespace:path
format is preserved in item model conversion- Automatically adjusts item model storage location
-
Folder Structure Adjustment:
- Moves files from
models/item/*
toitems/*
- Creates subdirectories based on model paths in Item Model mode
- Preserves other folder structures
- Moves files from
- Always backup your original resource pack before conversion
- Ensure correct input resource pack structure
- Test all custom item models in-game after conversion
- Check error messages if any issues are found
Issues and Pull Requests are welcome. Main areas for contribution:
- Support for more model formats
- Conversion efficiency improvements
- Error handling enhancements
- User experience improvements
GNU General Public License v3.0