1044 lines
56 KiB
JSON
1044 lines
56 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema",
|
|
"$id": "blockception.minecraft.resource.model",
|
|
"examples": [
|
|
{
|
|
"format_version": "1.12.0",
|
|
"minecraft:geometry": [
|
|
{
|
|
"description": {
|
|
"identifier": "geometry.entity",
|
|
"texture_width": 64.0,
|
|
"texture_height": 64.0,
|
|
"visible_bounds_offset": [0.0, 0.5, 0.0],
|
|
"visible_bounds_width": 1.5
|
|
},
|
|
"bones": {}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"allOf": [
|
|
{ "if": { "properties": { "format_version": { "type": "string", "const": "1.8.0" } } }, "then": { "$ref": "#/definitions/A" } },
|
|
{ "if": { "properties": { "format_version": { "type": "string", "const": "1.10.0" } } }, "then": { "$ref": "#/definitions/B" } },
|
|
{ "if": { "properties": { "format_version": { "type": "string", "const": "1.12.0" } } }, "then": { "$ref": "#/definitions/C" } },
|
|
{ "if": { "properties": { "format_version": { "type": "string", "const": "1.14.0" } } }, "then": { "$ref": "#/definitions/D" } }
|
|
],
|
|
"definitions": {
|
|
"A": {
|
|
"type": "object",
|
|
"title": "The minecraft resourcepack model schema for 1.8.0",
|
|
"description": "TODO description",
|
|
"required": ["format_version"],
|
|
"properties": {
|
|
"debug": { "type": "boolean", "description": "TODO description", "title": "TODO title" },
|
|
"format_version": {
|
|
"title": "The 1.8.0 format version",
|
|
"type": "string",
|
|
"pattern": "^1.8.0$",
|
|
"description": "A version that tells minecraft what type of data format can be expected when reading this file."
|
|
}
|
|
},
|
|
"propertyNames": { "pattern": "(^geometry\\.[a-zA-Z0-9_.'\\-:]+|format_version)" },
|
|
"additionalProperties": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "Geometry specification",
|
|
"title": "Geometry",
|
|
"properties": {
|
|
"bones": {
|
|
"type": "array",
|
|
"description": "The bones definitions",
|
|
"title": "Bones",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "The bone definition",
|
|
"title": "Bone",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"bind_pose_rotation": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"cubes": {
|
|
"type": "array",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"properties": {
|
|
"inflate": { "type": "number" },
|
|
"mirror": { "type": "boolean" },
|
|
"origin": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"size": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"uv": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }] }
|
|
}
|
|
}
|
|
},
|
|
"debug": { "type": "boolean" },
|
|
"inflate": { "type": "number" },
|
|
"locators": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "number" } } },
|
|
"mirror": { "type": "boolean" },
|
|
"name": { "type": "string" },
|
|
"neverRender": { "type": "boolean" },
|
|
"parent": { "type": "string" },
|
|
"pivot": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"poly_mesh": {
|
|
"type": "object",
|
|
"required": ["polys"],
|
|
"title": "Poly mesh",
|
|
"description": "TODO",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"normalized_uvs": { "title": "Normalized uvs", "description": "TODO", "type": "boolean" },
|
|
"positions": {
|
|
"title": "Positions",
|
|
"description": "TODO",
|
|
"type": "array",
|
|
"items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }]
|
|
},
|
|
"normals": {
|
|
"title": "Normals",
|
|
"description": "TODO",
|
|
"type": "array",
|
|
"items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }]
|
|
},
|
|
"polys": {
|
|
"title": "Polys",
|
|
"description": "TODO",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 4,
|
|
"items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"render_group_id": { "title": "Render group id", "description": "TODO", "type": "integer", "minimum": 0 },
|
|
"reset": { "title": "Reset", "description": "TODO", "type": "boolean" },
|
|
"rotation": {
|
|
"title": "Rotation",
|
|
"description": "TODO",
|
|
"type": "array",
|
|
"items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }]
|
|
},
|
|
"texture_meshes": {
|
|
"type": "array",
|
|
"title": "Texture meshes",
|
|
"description": "TODO",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"texture": { "type": "string" },
|
|
"local_pivot": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"position": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"rotation": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"scale": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"cape": { "title": "Cape", "description": "TODO", "type": "string" },
|
|
"debug": { "title": "Debug", "description": "TODO", "type": "boolean" },
|
|
"texturewidth": { "type": "integer", "description": "TODO description: texturewidth", "title": "Texturewidth" },
|
|
"textureheight": { "type": "integer", "description": "TODO description: textureheight", "title": "Textureheight" },
|
|
"visible_bounds_width": { "type": "number", "description": "TODO description: visible bounds width", "title": "Visible Bounds Width" },
|
|
"visible_bounds_height": { "type": "number", "description": "TODO description: visible bounds height", "title": "Visible Bounds Height" },
|
|
"visible_bounds_offset": {
|
|
"type": "array",
|
|
"description": "TODO description: visible bounds offset",
|
|
"title": "Visible Bounds Offset",
|
|
"items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"B": {
|
|
"type": "object",
|
|
"title": "The minecraft resourcepack model schema for 1.10.0",
|
|
"description": "TODO description",
|
|
"required": ["format_version"],
|
|
"properties": {
|
|
"debug": { "type": "boolean", "description": "TODO description", "title": "TODO title" },
|
|
"format_version": {
|
|
"title": "The 1.10.0 format version",
|
|
"type": "string",
|
|
"pattern": "^1.10.0$",
|
|
"description": "A version that tells minecraft what type of data format can be expected when reading this file."
|
|
}
|
|
},
|
|
"propertyNames": { "pattern": "(^geometry\\.[a-zA-Z0-9_.'\\-:]+|format_version)" },
|
|
"additionalProperties": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "Geometry specification",
|
|
"title": "Geometry",
|
|
"properties": {
|
|
"bones": {
|
|
"type": "array",
|
|
"description": "The bones definitions",
|
|
"title": "Bones",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "The bone definition",
|
|
"title": "Bone",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"bind_pose_rotation": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"cubes": {
|
|
"type": "array",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"properties": {
|
|
"inflate": { "type": "number" },
|
|
"mirror": { "type": "boolean" },
|
|
"origin": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"size": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"uv": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }] }
|
|
}
|
|
}
|
|
},
|
|
"debug": { "type": "boolean" },
|
|
"inflate": { "type": "number" },
|
|
"locators": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "number" } } },
|
|
"mirror": { "type": "boolean" },
|
|
"name": { "type": "string" },
|
|
"neverRender": { "type": "boolean" },
|
|
"parent": { "type": "string" },
|
|
"pivot": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"poly_mesh": {
|
|
"type": "object",
|
|
"required": ["polys"],
|
|
"properties": {
|
|
"normalized_uvs": { "type": "boolean" },
|
|
"positions": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"normals": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"polys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 4,
|
|
"items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"render_group_id": { "type": "integer", "minimum": 0 },
|
|
"reset": { "type": "boolean" },
|
|
"rotation": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"texture_meshes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"texture": { "type": "string" },
|
|
"local_pivot": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"position": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"rotation": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] },
|
|
"scale": { "type": "array", "items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"cape": { "type": "string" },
|
|
"debug": { "type": "boolean" },
|
|
"texturewidth": { "type": "integer", "description": "TODO description: texturewidth", "title": "Texturewidth" },
|
|
"textureheight": { "type": "integer", "description": "TODO description: textureheight", "title": "Textureheight" },
|
|
"visible_bounds_width": { "type": "number", "description": "TODO description: visible bounds width", "title": "Visible Bounds Width" },
|
|
"visible_bounds_height": { "type": "number", "description": "TODO description: visible bounds height", "title": "Visible Bounds Height" },
|
|
"visible_bounds_offset": {
|
|
"type": "array",
|
|
"description": "TODO description: visible bounds offset",
|
|
"title": "Visible Bounds Offset",
|
|
"items": [{ "type": "number" }, { "type": "number" }, { "type": "number" }]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"C_uv": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "number" } },
|
|
"C_direction_uv": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"properties": {
|
|
"uv": {
|
|
"description": "Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up.",
|
|
"$ref": "#/definitions/C_uv"
|
|
},
|
|
"uv_size": {
|
|
"description": "The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.",
|
|
"$ref": "#/definitions/C_uv"
|
|
},
|
|
"material_instance": { "type": "string", "description": "TODO" }
|
|
}
|
|
},
|
|
"C": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"title": "Geometry 1.12.0",
|
|
"description": "The minecraft resourcepack model schema for 1.12.0",
|
|
"required": ["format_version", "minecraft:geometry"],
|
|
"properties": {
|
|
"debug": { "type": "boolean", "default": false, "description": "TODO description", "title": "TODO title" },
|
|
"format_version": {
|
|
"title": "The 1.12.0 format version",
|
|
"type": "string",
|
|
"pattern": "^1.12.0$",
|
|
"description": "A version that tells minecraft what type of data format can be expected when reading this file."
|
|
},
|
|
"minecraft:geometry": {
|
|
"type": "array",
|
|
"title": "Geometry",
|
|
"description": "The collection of geometries",
|
|
"minItems": 1,
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"description": "Model specification",
|
|
"title": "Model",
|
|
"type": "object",
|
|
"required": ["description"],
|
|
"properties": {
|
|
"description": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "The descriptions of the geometry",
|
|
"title": "Description",
|
|
"required": ["identifier"],
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string",
|
|
"description": "Entity definition and Client Block definition files refer to this geometry via this identifier.",
|
|
"pattern": "^geometry\\.[a-zA-Z0-9_\\-\\.]+$",
|
|
"title": "Identifier"
|
|
},
|
|
"texture_width": {
|
|
"type": "number",
|
|
"description": "Assumed width in texels of the texture that will be bound to this geometry.",
|
|
"title": "Texture Width"
|
|
},
|
|
"texture_height": {
|
|
"type": "number",
|
|
"description": "Assumed height in texels of the texture that will be bound to this geometry.",
|
|
"title": "Texture Height"
|
|
},
|
|
"visible_bounds_offset": {
|
|
"description": "Offset of the visibility bounding box from the entity location point (in model space units).",
|
|
"title": "Visible Bounds Offset",
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": { "type": "number" }
|
|
},
|
|
"visible_bounds_width": {
|
|
"type": "number",
|
|
"description": "Width of the visibility bounding box (in model space units).",
|
|
"title": "Visible Bounds Width"
|
|
},
|
|
"visible_bounds_height": {
|
|
"type": "number",
|
|
"description": "Height of the visible bounding box (in model space units).",
|
|
"title": "Visible Bounds Height"
|
|
}
|
|
}
|
|
},
|
|
"bones": {
|
|
"type": "array",
|
|
"description": "The bones specification",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "A bones specification",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"average_normals": { "type": "object", "examples": [null] },
|
|
"cubes": {
|
|
"type": "array",
|
|
"description": "This is the list of cubes associated with this bone.",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "A single cube",
|
|
"properties": {
|
|
"inflate": {
|
|
"type": "number",
|
|
"description": "Grow this box by this additive amount in all directions (in model space units), this field overrides the bone's inflate field for this cube only."
|
|
},
|
|
"mirror": {
|
|
"type": "boolean",
|
|
"description": "Mirrors this cube about the unrotated x axis (effectively flipping the east / west faces), overriding the bone's 'mirror' setting for this cube."
|
|
},
|
|
"origin": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "This point declares the unrotated lower corner of cube (smallest x/y/z value in model space units)."
|
|
}
|
|
},
|
|
"pivot": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "If this field is specified, rotation of this cube occurs around this point, otherwise its rotation is around the center of the box. Note that in 1.12 this is flipped upside-down, but is fixed in 1.14."
|
|
}
|
|
},
|
|
"rotation": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The cube is rotated by this amount (in degrees, x-then-y-then-z order) around the pivot."
|
|
}
|
|
},
|
|
"size": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The cube extends this amount relative to its origin (in model space units)."
|
|
}
|
|
},
|
|
"uv": {
|
|
"description": "This is an alternate per-face uv mapping which specifies each face of the cube. Omitting a face will cause that face to not get drawn.",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"properties": {
|
|
"north": {
|
|
"$ref": "#/definitions/C_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and y axes, and faces the -z axis."
|
|
},
|
|
"south": {
|
|
"$ref": "#/definitions/C_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and y axes, and faces the z axis"
|
|
},
|
|
"east": {
|
|
"$ref": "#/definitions/C_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the z and y axes, and faces the x axis"
|
|
},
|
|
"west": {
|
|
"$ref": "#/definitions/C_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the z and y axes, and faces the -x axis"
|
|
},
|
|
"up": {
|
|
"$ref": "#/definitions/C_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and z axes, and faces the y axis"
|
|
},
|
|
"down": {
|
|
"$ref": "#/definitions/C_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and z axes, and faces the -y axis"
|
|
}
|
|
}
|
|
},
|
|
{ "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "number" } }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"debug": { "type": "boolean" },
|
|
"inflate": { "type": "number", "description": "Grow this box by this additive amount in all directions (in model space units)." },
|
|
"locators": {
|
|
"description": "This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation).",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": ["offset", "rotation"],
|
|
"properties": {
|
|
"offset": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "Position of the locator in model space.",
|
|
"items": { "type": "number", "description": "Position of the locator in model space." }
|
|
},
|
|
"rotation": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "Rotation of the locator in model space.",
|
|
"items": { "type": "number", "description": "Rotation of the locator in model space." }
|
|
},
|
|
"ignore_inherited_scale": { "type": "boolean", "description": "Discard scale inherited from parent bone." }
|
|
}
|
|
},
|
|
{
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation).",
|
|
"items": { "type": "number", "description": "Position of the locator in model space." }
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"mirror": {
|
|
"type": "boolean",
|
|
"description": "Mirrors the UV's of the unrotated cubes along the x axis, also causes the east/west faces to get flipped."
|
|
},
|
|
"name": { "type": "string", "description": "Animation files refer to this bone via this identifier." },
|
|
"parent": {
|
|
"type": "string",
|
|
"description": "Bone that this bone is relative to. If the parent bone moves, this bone will move along with it."
|
|
},
|
|
"pivot": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "The bone pivots around this point (in model space units).",
|
|
"items": { "type": "number", "description": "The bone pivots around this point (in model space units)." }
|
|
},
|
|
"poly_mesh": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "***EXPERIMENTAL*** A triangle or quad mesh object. Can be used in conjunction with cubes and texture geometry.",
|
|
"required": ["polys"],
|
|
"properties": {
|
|
"normalized_uvs": {
|
|
"type": "boolean",
|
|
"description": "If true, UVs are assumed to be [0-1]. If false, UVs are assumed to be [0-texture_width] and [0-texture_height] respectively."
|
|
},
|
|
"normals": {
|
|
"type": "array",
|
|
"description": "Vertex normals. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections.",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "Vertex normals. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections.",
|
|
"items": {
|
|
"type": "number",
|
|
"description": "Vertex normals. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections."
|
|
}
|
|
}
|
|
},
|
|
"polys": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"description": "If not specifying vertex indices, arrays of data must be a list of tris or quads, set by making this property either \"tri_list\" or \"quad_list\"",
|
|
"enum": ["tri_list", "quad_list"]
|
|
},
|
|
{
|
|
"type": "array",
|
|
"description": "Poly element indices, as an array of polygons, each an array of either three or four vertices, each an array of indices into positions, normals, and UVs (in that order).",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 4,
|
|
"description": "Poly element indices, as an array of polygons, each an array of either three or four vertices, each an array of indices into positions, normals, and UVs (in that order).",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": [
|
|
{ "type": "number", "description": "The index of the position" },
|
|
{ "type": "number", "description": "The index of the normal vertex" },
|
|
{ "type": "number", "description": "The index of the uv vertex" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"positions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "Vertex positions for the mesh. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the normals and UVs sections."
|
|
}
|
|
}
|
|
},
|
|
"uvs": {
|
|
"type": "array",
|
|
"description": "Vertex UVs. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections.",
|
|
"items": {
|
|
"type": "array",
|
|
"description": "Vertex UVs. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections.",
|
|
"minItems": 2,
|
|
"maxItems": 2,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "Vertex UVs. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"render_group_id": { "type": "integer", "minimum": 0 },
|
|
"rotation": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "The bone pivots around this point (in model space units).",
|
|
"items": {
|
|
"type": "number",
|
|
"description": "This is the initial rotation of the bone around the pivot, pre-animation (in degrees, x-then-y-then-z order)."
|
|
}
|
|
},
|
|
"texture_meshes": {
|
|
"type": "array",
|
|
"description": "***EXPERIMENTAL*** Adds a mesh to the bone's geometry by converting texels in a texture into boxes",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["texture"],
|
|
"properties": {
|
|
"local_pivot": {
|
|
"type": "array",
|
|
"description": "The pivot point on the texture (in *texture space* not entity or bone space) of the texture geometry",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The pivot point on the texture (in *texture space* not entity or bone space) of the texture geometry"
|
|
}
|
|
},
|
|
"position": {
|
|
"type": "array",
|
|
"description": "The position of the pivot point after rotation (in *entity space* not texture or bone space) of the texture geometry",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The position of the pivot point after rotation (in *entity space* not texture or bone space) of the texture geometry"
|
|
}
|
|
},
|
|
"rotation": {
|
|
"type": "array",
|
|
"description": "The rotation (in degrees) of the texture geometry relative to the offset",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": { "type": "number", "description": "The rotation (in degrees) of the texture geometry relative to the offset" }
|
|
},
|
|
"scale": {
|
|
"type": "array",
|
|
"description": "The scale (in degrees) of the texture geometry relative to the offset",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": { "type": "number", "description": "The scale (in degrees) of the texture geometry relative to the offset" }
|
|
},
|
|
"texture": { "type": "string", "description": "The friendly-named texture to use." }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"cape": { "type": "string" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"D_uv": { "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "number" } },
|
|
"D_direction_uv": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"properties": {
|
|
"uv": {
|
|
"description": "Specifies the uv origin for the face. For this face, it is the upper-left corner, when looking at the face with y being up.",
|
|
"$ref": "#/definitions/D_uv"
|
|
},
|
|
"uv_size": {
|
|
"description": "The face maps this many texels from the uv origin. If not specified, the box dimensions are used instead.",
|
|
"$ref": "#/definitions/D_uv"
|
|
},
|
|
"material_instance": { "type": "string", "description": "TODO" }
|
|
}
|
|
},
|
|
"D": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"title": "Geometry 1.14.0",
|
|
"description": "The minecraft resourcepack model schema for 1.14.0",
|
|
"required": ["format_version", "minecraft:geometry"],
|
|
"properties": {
|
|
"debug": { "type": "boolean", "default": false, "description": "TODO description", "title": "TODO title" },
|
|
"format_version": {
|
|
"title": "The 1.14.0 format version",
|
|
"type": "string",
|
|
"pattern": "^1.14.0$",
|
|
"description": "A version that tells minecraft what type of data format can be expected when reading this file."
|
|
},
|
|
"minecraft:geometry": {
|
|
"type": "array",
|
|
"title": "Geometry",
|
|
"description": "The collection of geometries",
|
|
"minItems": 1,
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"description": "Model specification",
|
|
"title": "Model",
|
|
"type": "object",
|
|
"required": ["description"],
|
|
"properties": {
|
|
"description": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"description": "The descriptions of the geometry",
|
|
"title": "Description",
|
|
"required": ["identifier"],
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string",
|
|
"description": "Entity definition and Client Block definition files refer to this geometry via this identifier.",
|
|
"pattern": "^geometry\\.[a-zA-Z0-9_\\-\\.]+$",
|
|
"title": "Identifier"
|
|
},
|
|
"texture_width": {
|
|
"type": "number",
|
|
"description": "Assumed width in texels of the texture that will be bound to this geometry.",
|
|
"title": "Texture Width"
|
|
},
|
|
"texture_height": {
|
|
"type": "number",
|
|
"description": "Assumed height in texels of the texture that will be bound to this geometry.",
|
|
"title": "Texture Height"
|
|
},
|
|
"visible_bounds_offset": {
|
|
"description": "Offset of the visibility bounding box from the entity location point (in model space units).",
|
|
"title": "Visible Bounds Offset",
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": { "type": "number" }
|
|
},
|
|
"visible_bounds_width": {
|
|
"type": "number",
|
|
"description": "Width of the visibility bounding box (in model space units).",
|
|
"title": "Visible Bounds Width"
|
|
},
|
|
"visible_bounds_height": {
|
|
"type": "number",
|
|
"description": "Height of the visible bounding box (in model space units).",
|
|
"title": "Visible Bounds Height"
|
|
}
|
|
}
|
|
},
|
|
"bones": {
|
|
"type": "array",
|
|
"description": "Bones define the 'skeleton' of the mob: the parts that can be animated, and to which geometry and other bones are attached.",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "A bones specification",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"average_normals": { "type": "object", "examples": [null] },
|
|
"cubes": {
|
|
"type": "array",
|
|
"description": "This is the list of cubes associated with this bone.",
|
|
"items": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "A single cube",
|
|
"properties": {
|
|
"inflate": {
|
|
"type": "number",
|
|
"description": "Grow this box by this additive amount in all directions (in model space units), this field overrides the bone's inflate field for this cube only."
|
|
},
|
|
"mirror": {
|
|
"type": "boolean",
|
|
"description": "Mirrors this cube about the unrotated x axis (effectively flipping the east / west faces), overriding the bone's 'mirror' setting for this cube."
|
|
},
|
|
"origin": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "This point declares the unrotated lower corner of cube (smallest x/y/z value in model space units)."
|
|
}
|
|
},
|
|
"pivot": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "If this field is specified, rotation of this cube occurs around this point, otherwise its rotation is around the center of the box. Note that in 1.12 this is flipped upside-down, but is fixed in 1.14.",
|
|
"title": "Pivot",
|
|
"items": {
|
|
"type": "number",
|
|
"description": "If this field is specified, rotation of this cube occurs around this point, otherwise its rotation is around the center of the box. Note that in 1.12 this is flipped upside-down, but is fixed in 1.14."
|
|
}
|
|
},
|
|
"rotation": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The cube is rotated by this amount (in degrees, x-then-y-then-z order) around the pivot."
|
|
}
|
|
},
|
|
"size": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The cube extends this amount relative to its origin (in model space units)."
|
|
}
|
|
},
|
|
"uv": {
|
|
"description": "This is an alternate per-face uv mapping which specifies each face of the cube. Omitting a face will cause that face to not get drawn.",
|
|
"oneOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"properties": {
|
|
"north": {
|
|
"$ref": "#/definitions/D_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and y axes, and faces the -z axis."
|
|
},
|
|
"south": {
|
|
"$ref": "#/definitions/D_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and y axes, and faces the z axis"
|
|
},
|
|
"east": {
|
|
"$ref": "#/definitions/D_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the z and y axes, and faces the x axis"
|
|
},
|
|
"west": {
|
|
"$ref": "#/definitions/D_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the z and y axes, and faces the -x axis"
|
|
},
|
|
"up": {
|
|
"$ref": "#/definitions/D_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and z axes, and faces the y axis"
|
|
},
|
|
"down": {
|
|
"$ref": "#/definitions/D_direction_uv",
|
|
"description": "Specifies the UV's for the face that stretches along the x and z axes, and faces the -y axis"
|
|
}
|
|
}
|
|
},
|
|
{ "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "number" } }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"debug": { "type": "boolean" },
|
|
"inflate": { "type": "number", "description": "Grow this box by this additive amount in all directions (in model space units)." },
|
|
"locators": {
|
|
"description": "This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation).",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": ["offset", "rotation"],
|
|
"properties": {
|
|
"offset": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "Position of the locator in model space.",
|
|
"items": { "type": "number", "description": "Position of the locator in model space." }
|
|
},
|
|
"rotation": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "Rotation of the locator in model space.",
|
|
"items": { "type": "number", "description": "Rotation of the locator in model space." }
|
|
},
|
|
"ignore_inherited_scale": { "type": "boolean", "description": "Discard scale inherited from parent bone." }
|
|
}
|
|
},
|
|
{
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "This is a list of locators associated with this bone. A locator is a point in model space that tracks a particular bone as the bone animates (by maintaining it's relationship to the bone through the animation).",
|
|
"items": { "type": "number", "description": "Position of the locator in model space." }
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"mirror": {
|
|
"type": "boolean",
|
|
"title": "Mirror",
|
|
"description": "Mirrors the UV's of the unrotated cubes along the x axis, also causes the east/west faces to get flipped."
|
|
},
|
|
"name": { "type": "string", "title": "Name", "description": "Animation files refer to this bone via this identifier." },
|
|
"parent": {
|
|
"type": "string",
|
|
"title": "Parent",
|
|
"description": "Bone that this bone is relative to. If the parent bone moves, this bone will move along with it."
|
|
},
|
|
"pivot": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "The bone pivots around this point (in model space units).",
|
|
"items": { "type": "number", "description": "The bone pivots around this point (in model space units)." }
|
|
},
|
|
"poly_mesh": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "***EXPERIMENTAL*** A triangle or quad mesh object. Can be used in conjunction with cubes and texture geometry.",
|
|
"required": ["polys"],
|
|
"properties": {
|
|
"normalized_uvs": {
|
|
"type": "boolean",
|
|
"description": "If true, UVs are assumed to be [0-1]. If false, UVs are assumed to be [0-texture_width] and [0-texture_height] respectively."
|
|
},
|
|
"normals": {
|
|
"type": "array",
|
|
"description": "Vertex normals. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections.",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "Vertex normals. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections.",
|
|
"items": {
|
|
"type": "number",
|
|
"description": "Vertex normals. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and UVs sections."
|
|
}
|
|
}
|
|
},
|
|
"polys": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"description": "If not specifying vertex indices, arrays of data must be a list of tris or quads, set by making this property either \"tri_list\" or \"quad_list\"",
|
|
"enum": ["tri_list", "quad_list"]
|
|
},
|
|
{
|
|
"type": "array",
|
|
"description": "Poly element indices, as an array of polygons, each an array of either three or four vertices, each an array of indices into positions, normals, and UVs (in that order).",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 4,
|
|
"description": "Poly element indices, as an array of polygons, each an array of either three or four vertices, each an array of indices into positions, normals, and UVs (in that order).",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": [
|
|
{ "type": "number", "description": "The index of the position" },
|
|
{ "type": "number", "description": "The index of the normal vertex" },
|
|
{ "type": "number", "description": "The index of the uv vertex" }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"positions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "Vertex positions for the mesh. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the normals and UVs sections."
|
|
}
|
|
}
|
|
},
|
|
"uvs": {
|
|
"type": "array",
|
|
"description": "Vertex UVs. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections.",
|
|
"items": {
|
|
"type": "array",
|
|
"description": "Vertex UVs. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections.",
|
|
"minItems": 2,
|
|
"maxItems": 2,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "Vertex UVs. Can be either indexed via the \"polys\" section, or be a quad-list if mapped 1-to-1 to the positions and normals sections."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"render_group_id": { "type": "integer", "minimum": 0 },
|
|
"rotation": {
|
|
"type": "array",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"description": "The bone pivots around this point (in model space units).",
|
|
"items": {
|
|
"type": "number",
|
|
"description": "This is the initial rotation of the bone around the pivot, pre-animation (in degrees, x-then-y-then-z order)."
|
|
}
|
|
},
|
|
"texture_meshes": {
|
|
"type": "array",
|
|
"description": "***EXPERIMENTAL*** Adds a mesh to the bone's geometry by converting texels in a texture into boxes",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["texture"],
|
|
"properties": {
|
|
"local_pivot": {
|
|
"type": "array",
|
|
"description": "The pivot point on the texture (in *texture space* not entity or bone space) of the texture geometry",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The pivot point on the texture (in *texture space* not entity or bone space) of the texture geometry"
|
|
}
|
|
},
|
|
"position": {
|
|
"type": "array",
|
|
"description": "The position of the pivot point after rotation (in *entity space* not texture or bone space) of the texture geometry",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": {
|
|
"type": "number",
|
|
"description": "The position of the pivot point after rotation (in *entity space* not texture or bone space) of the texture geometry"
|
|
}
|
|
},
|
|
"rotation": {
|
|
"type": "array",
|
|
"description": "The rotation (in degrees) of the texture geometry relative to the offset",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": { "type": "number", "description": "The rotation (in degrees) of the texture geometry relative to the offset" }
|
|
},
|
|
"scale": {
|
|
"type": "array",
|
|
"description": "The scale (in degrees) of the texture geometry relative to the offset",
|
|
"minItems": 3,
|
|
"maxItems": 3,
|
|
"items": { "type": "number", "description": "The scale (in degrees) of the texture geometry relative to the offset" }
|
|
},
|
|
"texture": { "type": "string", "description": "The friendly-named texture to use." }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"cape": { "type": "string" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|