Tutorials/Changing Minecraft entity models

This tutorial refers specifically to the officially supported add-ons modification architecture.

Summary
This tutorial is intended for advanced users! It is expected that you are familiar with the JSON data format. If you are not, please read the JSON sections of the Behavior Add-on tutorial. In this tutorial, we will be covering:


 * Overview of Minecraft's JSON model format
 * How to modify models

Time Required
33 minutes

Required Tools
You will need the following programs to follow along with this tutorial: This will be hard


 * A text editor

Any text editor should work but we would suggest using some sort of programming IDE. The Notepad of Windows is great for this.

Getting Started
We will be modifying the creeper to have 3 heads in this tutorial! Before we modify the creeper, let's look at the code that makes up our models.

Minecraft Model Format
Minecraft's models are defined using JSON in a file called. Players can find it in the Vanilla Minecraft resource pack at. This file contains the definition for every entity's model. Each definition looks something like:

"geometry.entityname": { "texturewidth": x,  "textureheight": y,   "bones": [ {      "name": "body part name", "pivot": [ x, y, z ], "cubes": [ {          "origin": [ x, y, z ], "size": [ x, y, z ], "uv": [ x, y ] }      ]     }   ] }
 * Entity Template Pseudocode

Note: This is just an example overview of how each entity's model is laid out. If you used this as is, it would not work!

Bones and animation
Bones are what we use to animate a model. Think of it like a human skeleton! In the human body, bones are moved by muscle and your flesh moves along with them. In 3D animation, bones are moved by an animation and that, in turn, moves the geometry that is attached to them!

Important Note!
Models are not entirely data driven yet. While it is possible to change things about a model, there are still certain hardcoded values like: which bones an entity needs, what material an entity is rendered with, and what animations an entity has. This means that you cannot just copy and paste geometry from the villager into the spider section and hope that it works! Until this system becomes more data driven, you will need to do some experimenting to achieve the results that you want!

Make sure you name your bones correctly! The name of the bones for an entity should be the same as they are in the Vanilla Minecraft resource pack. The animation and rendering of a model relies on this information being correct as explained above!

Modifying the Creeper
Now that we've looked at how the Minecraft model format is setup, let's modify the creeper a bit. We are going to make him have 3 heads, 2 on bottom and then 1 stacked on top, like a pyramid.

{  "name": "head", "pivot": [ 0.0, 18.0, 0.0 ], "cubes": [ {      "origin": [ -8.0, 18.0, -4.0 ], "size": [ 8, 8, 8 ], "uv": [ 0, 0 ] }  ] }, {   "name": "head", "pivot": [ 0.0, 18.0, 0.0 ], "cubes": [ {      "origin": [ -8.0, 18.0, -4.0 ], "size": [ 8, 8, 8 ], "uv": [ 0, 0 ] },    {       "origin": [ 0.0, 18.0, -4.0 ], "size": [ 8, 8, 8 ], "uv": [ 0, 0 ] },    {       "origin": [ -4.0, 26.0, -4.0 ], "size": [ 8, 8, 8 ], "uv": [ 0, 0 ] }  ] },
 * First, find the  section in Vanilla Minecraft's   file and copy it.
 * Create a new folder in your resource pack called
 * Create a new JSON file called  and save it into your new models folder
 * Enter in a pair of curly brackets into your new   and then paste the   from Vanilla's model file after the left curly bracket.
 * Now, let's first move his original head to the left a bit. To do this, we are going to change the x component of the origin for the bone named " " from -4 to -8.
 * Now, copy everything in the square brackets for " " for " ". This should just be the text highlighted gray.
 * mobs.json – geometry.creeper – head section
 * mobs.json – geometry.creeper – head section
 * Add a comma after the right curly bracket for the lines you just copied.
 * Paste the lines you copied after the comma
 * Add a comma after the right curly bracket for the lines you just pasted
 * Paste the copied lines again after the new comma
 * You should now have 3 pairs of curly brackets in the " " that each have an origin, size and uv object
 * In the first copied lines, we are going to move that head right by changing the x component of origin to 0 from -8
 * In the second copy, change the x component of the origin to -4 and the y component to 26
 * Your head section for the creeper should now look like (new text in gray):
 * mobs.json – geometry.creeper – head section

Note that we don't have to change the UV's for any of the new heads because we copied the old head's UV coordinates and we aren't adding different textures to the new heads.

Adding More
If you want to change another entity's model, make sure to add a comma after the right curly bracket of.

''Don't forget the comma! (highlighted red)'' {  "geometry.creeper": { // model stuff },   "geometry.chicken": { // model stuff } }
 * Pseudocode example

Congratulations!

If you've made it to here, you should now know everything you need to know to make your own entity models!

If you want to create custom entity which use custom model instead of vanila one, then creating custom model is required.

A 3D model editor can be used to create custom model easily, but you can also use method above to create custom model. Custom model file should located in. If you looking to vanila one, model usually named, but only   also work

教程/修改实体模型