{
  "$id": "blockception.minecraft.manifest.1",
  "type": "object",
  "title": "Manifest V1 Schema",
  "description": "The manifest file contains all the basic information about the pack that Minecraft needs to identify it. The tables below contain all the components of the manifest, their individual properties, and what they mean.",
  "additionalProperties": false,
  "required": ["format_version", "header"],
  "properties": {
    "format_version": {
      "type": "number",
      "description": "This defines the current version of the manifest. Don't change this unless you have a good reason to",
      "title": "Format Version"
    },
    "header": {
      "required": ["name", "uuid", "version"],
      "properties": {
        "name": { "type": "string", "default": 0, "description": "This is the name of the pack as it appears within Minecraft.", "title": "Name" },
        "description": {
          "type": "string",
          "default": 0,
          "description": "This is a short description of the pack. It will appear in the game below the name of the pack. We recommend keeping it to 1-2 lines.",
          "title": "Description"
        },
        "uuid": {
          "type": "string",
          "$ref": "../UUIDV4.json",
          "description": "This is a special type of identifier that uniquely identifies this pack from any other pack. UUIDs are written in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx where each x is a hexadecimal value (0-9 or a-f). We recommend using an online service to generate this and guarantee their uniqueness (just bing UUID Generator to find some)",
          "title": "UUID"
        },
        "version": {
          "title": "Version",
          "description": "This is the version of your pack in the format [majorVersion, minorVersion, revision].",
          "oneOf": [{ "$ref": "../Version.json" }, { "$ref": "../semver.json" }]
        },
        "min_engine_version": {
          "type": "string",
          "$ref": "../Version.json",
          "description": "This is the minimum version of the game that this pack was written for. This helps the game identify whether any backwards compatibility is needed for your pack. You should always use the highest version currently available when creating packs",
          "title": "Minimum Engine Version"
        },
        "lock_template_options": { "type": "boolean", "description": "UNDOCUMENTED: lock template options.", "title": "Lock Template Options" },
        "base_game_version": { "$ref": "../Version.json", "description": "UNDOCUMENTED: base game version.", "title": "Base Game Version" }
      },
      "description": "UNDOCUMENTED: header.",
      "title": "Header"
    },
    "modules": {
      "type": "array",
      "title": "Modules",
      "items": {
        "additionalProperties": false,
        "type": "object",
        "description": "UNDOCUMENTED: modules.",
        "title": "Modules",
        "required": ["type", "uuid", "version"],
        "properties": {
          "type": {
            "description": "This is the type of the module. Can be any of the following: resources, data, client_data, interface, world_template",
            "type": "string",
            "enum": ["resources", "data", "client_data", "interface", "world_template", "skin_pack"],
            "title": "Type"
          },
          "description": {
            "type": "string",
            "description": "This is a short description of the module. This is not user-facing at the moment but is a good place to remind yourself why the module is defined",
            "title": "Description",
            "default": ""
          },
          "uuid": {
            "$ref": "../UUIDV4.json",
            "description": "This is a unique identifier for the module in the same format as the pack's UUID in the header. This should be different from the pack's UUID, and different for every module",
            "title": "UUID"
          },
          "version": {
            "title": "Version",
            "description": "This is the version of the module in the same format as the pack's version in the header. This can be used to further identify changes in your pack",
            "oneOf": [{ "$ref": "../Version.json" }, { "$ref": "../semver.json" }]
          }
        }
      },
      "description": "UNDOCUMENTED: modules."
    },
    "dependencies": {
      "type": "array",
      "description": "These are the different features that the pack makes use of that aren't necessarily enabled by default.",
      "items": {
        "additionalProperties": false,
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "$ref": "../UUIDV4.json",
            "description": "This is the unique identifier of the pack that this pack depends on. It needs to be the exact same UUID that the pack has defined in the header section of it's manifest file",
            "title": "UUID"
          },
          "version": {
            "title": "Version",
            "description": "This is the specific version of the pack that your pack depends on. Should match the version the other pack has in its manifest file",
            "oneOf": [{ "$ref": "../Version.json" }, { "$ref": "../semver.json" }]
          }
        },
        "description": "UNDOCUMENTED: dependencies.",
        "title": "Dependencies"
      },
      "title": "Dependencies"
    },
    "capabilities": {
      "type": "object",
      "title": "Capabilities",
      "description": "These are the different features that the pack makes use of that aren't necessarily enabled by default.",
      "properties": {
        "experimental_custom_ui": {
          "type": "boolean",
          "description": "Allows HTML files in the pack to be used for custom UI, and scripts in the pack to call and manipulate custom UI.",
          "title": "Experimental Custom Ui"
        },
        "chemistry": { "type": "boolean", "description": "Allows the pack to add, change or replace Chemistry functionality.", "title": "Chemistry" }
      }
    },
    "metadata": {
      "authors": {
        "title": "Authors",
        "description": "Name of the author(s) of the pack.",
        "type": "array",
        "items": { "type": "string", "title": "Name", "description": "Name of the author of the pack." }
      },
      "license": { "type": "string", "description": "The license of the pack.", "title": "License" },
      "url": { "type": "string", "description": "The home website of your pack.", "title": "Url" },
      "description": "UNDOCUMENTED: metadata.",
      "title": "Metadata"
    }
  }
}
