Model

As of 14w06a, Resource packs can specify models for blocks.

Blockstates
The folder  tells Minecraft which model to load.

Each blockstate is constructed in the following format.


 * The root tag
 * : Holds the names of all the variants of the block. Each variant name is hardcoded.
 * A variant, it can be an array allowing for random models, or just hold one model.
 * : Specifies which model to use, starting in
 * : Rotation of the model on the x-axis in increments of 90 degrees.
 * : Rotation of the model on the y-axis in increments of 90 degrees.
 * : Rotation of the model on the z-axis in increments of 90 degrees.
 * : If false, rotates the textures with the block. Defaults to false.
 * : How often a certain model will be used.

Models
Models are stored in the folder

Each model is constructed in the following format.


 * The root tag
 * : Loads from a different model from a path. Starts in
 * : Whether to use ambient occlusion or not
 * : Specifies textures for a block, from the texture variables. Each texture starts in
 * : What texture to load particles from
 * A texture variable: Any variable defined in the textures section or from a parent model
 * : All the different cubes of the block
 * An element
 * : Start point for the cube, in  format
 * : Stop point for the cube, in  format
 * : Controls block rotation
 * : An array of the the center of the rotation, in  format. Defaults to
 * : Specifies the direction of rotation. Can be,   or
 * : Specifies how much rotation. Can be -45 through 45 in 22.5 increments. Defaults to 0
 * : Specifies whether or not to scale the faces across the whole block. Can be true or false. Defaults to false
 * : Faces of the cubes. If a face is left out it will not render.
 * ,,  ,  , or
 * : Defines the area of the texture to use in  format.
 * : Specifies which texture variable prepended with the hash symbol (#)
 * : Specifies the opposite of which neighboring face causes culling to occur. Can be,  ,  ,  , or
 * : Rotates the textures in increments of 90 degrees.
 * : Determines whether to tint the texture using a hardcoded tint index. The default is not using the tint, and any number causes it to use tint. Note that only certain blocks have a tint index, all others will be unaffected.

Item Models
Item models can be specified using the files stored in


 * The main tag
 * : Loads from a different model from a path. Starts in.
 * Can be set to  to use the standard item model.
 * Can be set to  to load the item from an entity file. Does not work on all items, as you cannot specify the entity.
 * : Specifies textures for a block, from the texture variables. Each texture starts in
 * : A layer of the texture.