{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/custom-machinery-machine/_shared/latest--machine.json",
  "title": "CustomMachinery Machine",
  "description": "CustomMachinery machine json schema definition",
  "x-lintel": {
    "source": "https://alec016.github.io/Custom-Machinery/Json%20Schema/src/main/resources/schemas/machine.json",
    "sourceSha256": "07c1545381bd7f26d727c58e328bbe5dc515502123b86dc4e19218d08acd1246"
  },
  "type": "object",
  "properties": {
    "appearance": {
      "type": "object",
      "properties": {
        "ambient_sound": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "block": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "color": {
          "type": "integer",
          "format": "int32"
        },
        "errored": {
          "$ref": "#/$defs/AppearanceBuilder"
        },
        "hardness": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "idle": {
          "$ref": "#/$defs/AppearanceBuilder"
        },
        "interaction_sound": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "break": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                },
                "place": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                },
                "step": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              }
            },
            {
              "type": "string",
              "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
            }
          ]
        },
        "item": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "light": {
          "type": "integer",
          "format": "int32",
          "minimum": 0,
          "maximum": 15
        },
        "mining_level": {
          "type": "string",
          "pattern": "[minecraft:needs_\\[stone|iron|diamond]|forge:needs_netherite]_tool"
        },
        "paused": {
          "$ref": "#/$defs/AppearanceBuilder"
        },
        "requires_tool": {
          "type": "boolean"
        },
        "resistance": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "running": {
          "$ref": "#/$defs/AppearanceBuilder"
        },
        "shape": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "shape_collision": {
          "anyOf": [
            {
              "type": "array"
            },
            {
              "type": "string"
            }
          ]
        },
        "tool_type": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "minecraft:mineable/[shovel|pickaxe|axe|hoe]"
            },
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {}
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "catalysts": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
      }
    },
    "components": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "radius": {
                "type": "integer",
                "format": "int32",
                "minimum": 1,
                "maximum": 32
              },
              "type": {
                "const": "custommachinery:chunkload"
              }
            },
            "required": [
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int64",
                "exclusiveMinimum": 0
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "maxInput": {
                "type": "integer",
                "format": "int64",
                "exclusiveMinimum": 0
              },
              "maxOutput": {
                "type": "integer",
                "format": "int64",
                "exclusiveMinimum": 0
              },
              "type": {
                "const": "custommachinery:energy"
              }
            },
            "required": [
              "capacity",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int32",
                "exclusiveMinimum": 0
              },
              "retrieve": {
                "type": "boolean"
              },
              "slots": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "type": {
                "const": "custommachinery:experience"
              }
            },
            "required": [
              "capacity",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int64",
                "exclusiveMinimum": 0
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "filter": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              },
              "id": {
                "type": "string"
              },
              "maxInput": {
                "type": "integer",
                "format": "int64",
                "exclusiveMinimum": 0
              },
              "maxOutput": {
                "type": "integer",
                "format": "int64",
                "exclusiveMinimum": 0
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "unique": {
                "type": "boolean"
              },
              "type": {
                "const": "custommachinery:fluid"
              }
            },
            "required": [
              "capacity",
              "id",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "filter": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              },
              "id": {
                "type": "string"
              },
              "locked": {
                "type": "boolean"
              },
              "maxInput": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              },
              "maxOutput": {
                "type": "integer",
                "format": "int32",
                "minimum": 1
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "variant": {
                "type": "string",
                "pattern": "custommachinery:[energy|filter|fluid|fuel|result|upgrade|mana|source]"
              },
              "whitelist": {
                "type": "boolean"
              },
              "type": {
                "const": "custommachinery:item"
              }
            },
            "required": [
              "id",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "comparatorinputid": {
                "type": "string"
              },
              "compratorinputtype": {
                "type": "string",
                "pattern": "custommachinery:[energy|fluid|item]"
              },
              "craftingpoweroutput": {
                "type": "integer",
                "format": "int32",
                "minimum": 0,
                "maximum": 16
              },
              "erroredpoweroutput": {
                "type": "integer",
                "format": "int32",
                "minimum": 0,
                "maximum": 16
              },
              "idlepoweroutput": {
                "type": "integer",
                "format": "int32",
                "minimum": 0,
                "maximum": 16
              },
              "powertopause": {
                "type": "integer",
                "format": "int32",
                "minimum": 0,
                "maximum": 16
              },
              "type": {
                "const": "custommachinery:redstone"
              }
            },
            "required": [
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int32",
                "exclusiveMinimum": 0
              },
              "maxInput": {
                "type": "integer",
                "format": "int32",
                "exclusiveMinimum": 0
              },
              "maxOutput": {
                "type": "integer",
                "format": "int32",
                "exclusiveMinimum": 0
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "type": {
                "const": "custommachinery:mana"
              }
            },
            "required": [
              "capacity",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int32",
                "exclusiveMinimum": 0
              },
              "maxInput": {
                "type": "integer",
                "format": "int32",
                "exclusiveMinimum": 0
              },
              "maxOutput": {
                "type": "integer",
                "format": "int32",
                "exclusiveMinimum": 0
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "type": {
                "const": "custommachinery:source"
              }
            },
            "required": [
              "capacity",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int64"
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "filter": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              },
              "id": {
                "type": "string"
              },
              "max_input": {
                "type": "integer",
                "format": "int64"
              },
              "max_output": {
                "type": "integer",
                "format": "int64"
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "whitelist": {
                "type": "boolean"
              },
              "type": {
                "const": "custommachinery:gas"
              }
            },
            "required": [
              "capacity",
              "id",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int64"
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "filter": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              },
              "id": {
                "type": "string"
              },
              "max_input": {
                "type": "integer",
                "format": "int64"
              },
              "max_output": {
                "type": "integer",
                "format": "int64"
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "whitelist": {
                "type": "boolean"
              },
              "type": {
                "const": "custommachinery:infusion"
              }
            },
            "required": [
              "capacity",
              "id",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int64"
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "filter": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              },
              "id": {
                "type": "string"
              },
              "max_input": {
                "type": "integer",
                "format": "int64"
              },
              "max_output": {
                "type": "integer",
                "format": "int64"
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "whitelist": {
                "type": "boolean"
              },
              "type": {
                "const": "custommachinery:pigment"
              }
            },
            "required": [
              "capacity",
              "id",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "capacity": {
                "type": "integer",
                "format": "int64"
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "filter": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              },
              "id": {
                "type": "string"
              },
              "max_input": {
                "type": "integer",
                "format": "int64"
              },
              "max_output": {
                "type": "integer",
                "format": "int64"
              },
              "mode": {
                "$ref": "#/$defs/ComponentIOMode"
              },
              "whitelist": {
                "type": "boolean"
              },
              "type": {
                "const": "custommachinery:slurry"
              }
            },
            "required": [
              "capacity",
              "id",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "base_temp": {
                "type": "number",
                "format": "double"
              },
              "capacity": {
                "type": "number",
                "format": "double"
              },
              "conduction": {
                "type": "number",
                "format": "double"
              },
              "config": {
                "$ref": "#/$defs/Config"
              },
              "insulation": {
                "type": "number",
                "format": "double"
              },
              "type": {
                "const": "custommachinery:heat"
              }
            },
            "required": [
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "config": {
                "$ref": "#/$defs/Config"
              },
              "stress_impact": {
                "type": "number",
                "format": "float",
                "minimum": 0
              },
              "type": {
                "const": "custommachinery:contraption"
              }
            },
            "required": [
              "type"
            ]
          }
        ]
      }
    },
    "gui": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/BarElement"
          },
          {
            "$ref": "#/$defs/ButtonElement"
          },
          {
            "$ref": "#/$defs/ConfigElement"
          },
          {
            "$ref": "#/$defs/DumpElement"
          },
          {
            "$ref": "#/$defs/EnergyElement"
          },
          {
            "$ref": "#/$defs/ExperienceElement"
          },
          {
            "$ref": "#/$defs/FluidElement"
          },
          {
            "$ref": "#/$defs/FuelElement"
          },
          {
            "$ref": "#/$defs/PlayerInventoryElement"
          },
          {
            "$ref": "#/$defs/ProgressBarElement"
          },
          {
            "$ref": "#/$defs/ResetElement"
          },
          {
            "$ref": "#/$defs/SizeElement"
          },
          {
            "$ref": "#/$defs/SlotElement"
          },
          {
            "$ref": "#/$defs/StatusElement"
          },
          {
            "$ref": "#/$defs/TextElement"
          },
          {
            "$ref": "#/$defs/TextureElement"
          },
          {
            "$ref": "#/$defs/ManaElement"
          },
          {
            "$ref": "#/$defs/SourceElement"
          },
          {
            "$ref": "#/$defs/GasElement"
          },
          {
            "$ref": "#/$defs/InfusionElement"
          },
          {
            "$ref": "#/$defs/PigmentElement"
          },
          {
            "$ref": "#/$defs/SlurryElement"
          },
          {
            "$ref": "#/$defs/HeatElement"
          }
        ]
      }
    },
    "jei": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/BarElement"
          },
          {
            "$ref": "#/$defs/ButtonElement"
          },
          {
            "$ref": "#/$defs/ConfigElement"
          },
          {
            "$ref": "#/$defs/DumpElement"
          },
          {
            "$ref": "#/$defs/EnergyElement"
          },
          {
            "$ref": "#/$defs/ExperienceElement"
          },
          {
            "$ref": "#/$defs/FluidElement"
          },
          {
            "$ref": "#/$defs/FuelElement"
          },
          {
            "$ref": "#/$defs/PlayerInventoryElement"
          },
          {
            "$ref": "#/$defs/ProgressBarElement"
          },
          {
            "$ref": "#/$defs/ResetElement"
          },
          {
            "$ref": "#/$defs/SizeElement"
          },
          {
            "$ref": "#/$defs/SlotElement"
          },
          {
            "$ref": "#/$defs/StatusElement"
          },
          {
            "$ref": "#/$defs/TextElement"
          },
          {
            "$ref": "#/$defs/TextureElement"
          },
          {
            "$ref": "#/$defs/ManaElement"
          },
          {
            "$ref": "#/$defs/SourceElement"
          },
          {
            "$ref": "#/$defs/GasElement"
          },
          {
            "$ref": "#/$defs/InfusionElement"
          },
          {
            "$ref": "#/$defs/PigmentElement"
          },
          {
            "$ref": "#/$defs/SlurryElement"
          },
          {
            "$ref": "#/$defs/HeatElement"
          }
        ]
      }
    },
    "name": {
      "anyOf": [
        {
          "$ref": "#/$defs/Tooltip"
        },
        {
          "type": "string"
        }
      ]
    },
    "processor": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "integer",
          "format": "int32",
          "readOnly": true
        },
        "cooldown": {
          "type": "integer",
          "format": "int32",
          "minimum": 1
        },
        "type": {
          "type": "string",
          "pattern": "custommachinery:[machine|craft]"
        }
      },
      "required": [
        "type"
      ]
    },
    "tooltips": {
      "anyOf": [
        {
          "$ref": "#/$defs/Tooltip"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        }
      ]
    }
  },
  "required": [
    "name"
  ],
  "$defs": {
    "AppearanceBuilder": {
      "type": "object",
      "properties": {
        "block": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "color": {
          "type": "integer",
          "format": "int32"
        },
        "item": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "light": {
          "type": "integer",
          "format": "int32",
          "minimum": 0,
          "maximum": 15
        }
      }
    },
    "BarElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "max": {
          "type": "integer",
          "format": "int32"
        },
        "min": {
          "type": "integer",
          "format": "int32"
        },
        "orientation": {
          "$ref": "#/$defs/Orientation"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_empty": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_filled": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:bar"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "ButtonElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "hold_time": {
          "type": "integer",
          "format": "int32",
          "minimum": 1
        },
        "id": {
          "type": "string"
        },
        "item": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
            },
            {
              "type": "object",
              "properties": {
                "Count": {
                  "type": "integer",
                  "format": "int32"
                },
                "id": {
                  "type": "string"
                },
                "tag": {
                  "type": "string",
                  "pattern": "#?[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
                }
              },
              "required": [
                "id"
              ]
            }
          ]
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "text": {
          "$ref": "#/$defs/Tooltip"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_toggle": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_toggle_hovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "toggle": {
          "type": "boolean"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:button"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "ComponentIOMode": {
      "type": "string",
      "enum": [
        "INPUT",
        "OUTPUT",
        "BOTH",
        "NONE",
        "input",
        "output",
        "both",
        "none"
      ]
    },
    "Config": {
      "type": "object",
      "properties": {
        "back": {
          "$ref": "#/$defs/SideMode"
        },
        "bottom": {
          "$ref": "#/$defs/SideMode"
        },
        "enabled": {
          "type": "boolean"
        },
        "front": {
          "$ref": "#/$defs/SideMode"
        },
        "input": {
          "type": "boolean"
        },
        "left": {
          "$ref": "#/$defs/SideMode"
        },
        "output": {
          "type": "boolean"
        },
        "right": {
          "$ref": "#/$defs/SideMode"
        },
        "top": {
          "$ref": "#/$defs/SideMode"
        }
      }
    },
    "ConfigElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:config"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "DumpElement": {
      "type": "object",
      "properties": {
        "component": {
          "type": "string",
          "pattern": "custommachinery:[item|fluid|source|mana]"
        },
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "id": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:dump"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "EnergyElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_empty": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_filled": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:energy"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "ExperienceElement": {
      "type": "object",
      "properties": {
        "display": {
          "type": "string",
          "enum": [
            "LITERAL",
            "LEVEL",
            "BOTH",
            "literal",
            "level",
            "both"
          ]
        },
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "mode": {
          "type": "string",
          "enum": [
            "INPUT_ONE",
            "INPUT_TEN",
            "INPUT_ALL",
            "OUTPUT_ONE",
            "OUTPUT_TEN",
            "OUTPUT_ALL",
            "DISPLAY",
            "DISPLAY_BAR",
            "input_one",
            "input_ten",
            "input_all",
            "output_one",
            "output_ten",
            "output_all",
            "display",
            "display_bar"
          ]
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:experience"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "FluidElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:fluid"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "FuelElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_empty": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_filled": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:fuel"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "GasElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:gas"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "HeatElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:heat"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "InfusionElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:infusion"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "ManaElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:mana"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "Orientation": {
      "type": "string",
      "enum": [
        "RIGHT",
        "LEFT",
        "TOP",
        "BOTTOM",
        "right",
        "left",
        "top",
        "bottom"
      ]
    },
    "PigmentElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:pigment"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "PlayerInventoryElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:player_inventory"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "ProgressBarElement": {
      "type": "object",
      "properties": {
        "direction": {
          "$ref": "#/$defs/Orientation"
        },
        "end": {
          "type": "number",
          "format": "float"
        },
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "start": {
          "type": "number",
          "format": "float"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_empty": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_filled": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:progress"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "ResetElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:reset"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "SideMode": {
      "type": "string",
      "enum": [
        "INPUT",
        "OUTPUT",
        "BOTH",
        "NONE",
        "input",
        "output",
        "both",
        "none"
      ]
    },
    "SizeElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "maximum": 2160
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "maximum": 3840
        }
      }
    },
    "SlotElement": {
      "type": "object",
      "properties": {
        "ghost": {
          "type": "object"
        },
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "id": {
          "type": "string"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:slot"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "SlurryElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:slurry"
        }
      },
      "required": [
        "id",
        "x",
        "y",
        "type"
      ]
    },
    "SourceElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "highlight": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:source"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "StatusElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_errored": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_idle": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "texture_running": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:status"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "TextElement": {
      "type": "object",
      "properties": {
        "alignment": {
          "type": "string",
          "enum": [
            "LEFT",
            "left",
            "CENTER",
            "center",
            "RIGHT",
            "right"
          ]
        },
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "jei": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "text": {
          "anyOf": [
            {
              "$ref": "#/$defs/Tooltip"
            },
            {
              "type": "string"
            }
          ]
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:text"
        }
      },
      "required": [
        "text",
        "x",
        "y",
        "type"
      ]
    },
    "TextureElement": {
      "type": "object",
      "properties": {
        "height": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "jei": {
          "type": "boolean"
        },
        "priority": {
          "type": "integer",
          "format": "int32"
        },
        "texture": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "textureHovered": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "tooltips": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Tooltip"
          }
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "minimum": -1
        },
        "x": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "format": "int32",
          "minimum": 0
        },
        "type": {
          "const": "custommachinery:texture"
        }
      },
      "required": [
        "x",
        "y",
        "type"
      ]
    },
    "Tooltip": {
      "type": "object",
      "properties": {
        "bold": {
          "type": "boolean"
        },
        "color": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer",
              "format": "int32"
            }
          ]
        },
        "font": {
          "type": "string",
          "pattern": "[a-z]+[a-z|_]*[a-z]:[a-z]+[a-z|_|/|#|,|=|\\.]*[a-z]$"
        },
        "italic": {
          "type": "boolean"
        },
        "obfuscated": {
          "type": "boolean"
        },
        "strikethrough": {
          "type": "boolean"
        },
        "text": {
          "type": "string"
        },
        "underlined": {
          "type": "boolean"
        }
      },
      "required": [
        "text"
      ]
    }
  }
}
