Library for modders, resource pack makers, and modpack makers to create and edit entity models WITH JSON
Does not work with OptiFine format!
If you'd like to dump json versions of all entity models (vanilla or modded) so that you can edit them easily with resource packs or use them as examples, here's how:
- Launch the game, and then open the configuration file located at
.minecraft/config/jsonem.properties
. - Edit the second line of the file to be
dump_models=true
. - Re-launch the game. Navigate to the folder
.minecraft/jsonem_dump
. - Within this folder you should find all registered entity models dumped as json, formatted like a resource pack.
- Use this format when editing or adding models with a resource pack.
To edit models in Blockbench, install the plugin located in this repository.
- Download the file
jsonem_models.js
from this GitHub repository - In Blockbench, navigate to
File > Plugins
, and at the top of the dialog click the icon forLoad Plugin from File
. Choose thejsonem_models.js
file. - Navigate to
File > New
and chooseJsonEM Java Entity Model
to begin editing. - You can also
File > Open Model
to import a JsonEM json model file, such as those dumped from the game. - To export your model for use with JsonEM, navigate to
File > Export > Export JsonEM Java Entity Model
and save the file.
- Complete the steps above to dump all entity models from your game or modpack.
- When editing your resource pack/modpack resources, add entity model json files as they are formatted in the dumped model folder.
JsonEM can be used to create TexturedModelData for your entities entirely using json.
This guide will demonstrate how to make the model for the cube entity in this tutorial with json.
- Include the mod as follows (versions can be found here):
repositories {
maven { url "https://api.modrinth.com/maven" }
}
dependencies {
// Replace <version> with desired version
modImplementation "maven.modrinth:jsonem:<version>"
include "maven.modrinth:jsonem:<version>"
}
- Register the entity model layer for your entity through JsonEM instead of Fabric API (Excludes the need for a code-generated TexturedModelData)
void onInitializeClient() {
[...]
JsonEM.registerModelLayer(MODEL_CUBE_LAYER); // Layer ID: "entitytesting:cube", Layer name: "main"
}
- Add a model file to your mod resources containing your entity's model data
EX:assets/entitytesting/models/entity/cube/main.json
{
"texture": {
"width": 64,
"height": 64
},
"bones": {
"cube": {
"transform": {
"origin": [0, 0, 0]
},
"cuboids": [
{
"uv": [0, 0],
"offset": [-6, 12, -6],
"dimensions": [12, 12, 12]
}
]
}
}
}
- Make sure that the bone
"cube"
in the file above is being accessed with the same name in your entity model
public CubeEntityModel(ModelPart modelPart) {
this.base = modelPart.getChild("cube"); // The original tutorial used an unspecified field called EntityModelPartNames.CUBE
}