@comuns-rpgmaker/plugin-metadata
Version:
Automated tool for plugin metadata schema validation and generation
471 lines • 12.7 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/comuns-rpgmaker/plugin-metadata/master/schema/plugin-metadata.json",
"title": "RMMZPluginMetadata",
"description": "RPG Maker MZ plugin metadata",
"type": "object",
"additionalProperties": false,
"properties": {
"target": {
"type": "string",
"const": "MZ"
},
"description": {
"description": "A short description of what the plugin does",
"$ref": "#/definitions/localizedText"
},
"author": {
"description": "Name or nickname of the author of the plugin",
"type": "string"
},
"url": {
"description": "An URL where the plugin can be found. Useful for updates",
"type": "string",
"format": "uri"
},
"languages": {
"description": "List of languages the metadata for this plugin supports",
"type": "array",
"items": {
"type": "string"
}
},
"help": {
"description": "Plugin help, describes usage and explains features in more detail",
"$ref": "#/definitions/localizedText"
},
"base": {
"description": "List of base plugins that this plugin depends on",
"type": "array",
"items": {
"type": "string"
}
},
"before": {
"description": "List of plugins this plugin should come before on the plugin manager",
"type": "array",
"items": {
"type": "string"
}
},
"after": {
"description": "List of plugins this plugin should come after on the plugin manager",
"type": "array",
"items": {
"type": "string"
}
},
"params": {
"description": "Plugin parameter definitions",
"type": "array",
"items": {
"$ref": "#/definitions/parameter"
}
},
"commands": {
"description": "Plugin command definitions",
"type": "array",
"items": {
"$ref": "#/definitions/command"
}
},
"structs": {
"description": "Plugin struct definitions",
"type": "array",
"items": {
"$ref": "#/definitions/struct"
}
}
},
"required": [
"target",
"description",
"author",
"help"
],
"definitions": {
"basicParameterType": {
"$comment": "Type for a parameter with no additional options",
"title": "BasicParamType",
"type": "string",
"enum": [
"text",
"note",
"file",
"actor",
"class",
"skill",
"item",
"weapon",
"armor",
"enemy",
"troop",
"state",
"tileset",
"common_event",
"switch",
"variable"
]
},
"structType": {
"title": "StructType",
"type": "object",
"properties": {
"struct": {
"type": "string"
}
},
"required": [
"struct"
]
},
"extendedParameterType": {
"title": "ParamType",
"$comment": "All parameter types, including those with additional options",
"anyOf": [{
"$ref": "#/definitions/basicParameterType"
},
{
"type": "string",
"enum": [
"number",
"file",
"animation",
"boolean",
"select",
"combo"
]
}
]
},
"parameterType": {
"title": "ParamType",
"$comment": "All parameter types, including those with additional options",
"anyOf": [{
"$ref": "#/definitions/extendedParameterType"
},
{
"$ref": "#/definitions/structType"
}
]
},
"localizedText": {
"title": "LocalizedText",
"$comment": "Either just a default text or a map with localized texts",
"type": [
"string",
"object"
],
"properties": {
"default": {
"description": "Text for the default language",
"type": "string"
}
},
"additionalProperties": {
"description": "Text for an specific language",
"type": "string"
},
"required": [
"default"
]
},
"parameter": {
"title": "Param",
"description": "A plugin parameter",
"allOf": [{
"title": "ParamBase",
"type": "object",
"properties": {
"name": {
"description": "Parameter name, used internally by the plugin",
"type": "string"
},
"description": {
"description": "Parameter description, will be shown in the editor",
"$ref": "#/definitions/localizedText"
},
"children": {
"description": "List of child parameters",
"type": "array",
"items": {
"$ref": "#/definitions/parameter"
}
},
"default": {
"description": "Default value for this parameter"
},
"type": {
"description": "Parameter type"
},
"text": {
"description": "Text to be shown in the editor for this parameter",
"$ref": "#/definitions/localizedText"
}
},
"required": [
"name",
"text",
"description"
]
},
{
"anyOf": [{
"title": "BasicParam",
"type": "object",
"properties": {
"type": {
"$ref": "#/definitions/basicParameterType"
}
}
},
{
"title": "NumberParam",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "number"
},
"min": {
"description": "Minimum value",
"type": "number"
},
"max": {
"description": "Maximum value",
"type": "number"
},
"decimals": {
"description": "Floating point precision. If ommited, the number must be an integer.",
"type": "number"
}
},
"required": [
"type"
]
},
{
"title": "FileParam",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "file"
},
"dir": {
"description": "Base directory for the file picker",
"type": "string",
"format": "uri-reference"
},
"require": {
"description": "Whether to include the file on deployment",
"type": "boolean"
}
},
"required": [
"type"
]
},
{
"title": "AnimationParam",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "animation"
},
"require": {
"description": "Whether to include the file on deployment",
"type": "boolean"
}
},
"required": [
"type"
]
},
{
"title": "BooleanParam",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "boolean"
},
"on": {
"description": "Label for the true option",
"$ref": "#/definitions/localizedText"
},
"off": {
"description": "Label for the false option",
"$ref": "#/definitions/localizedText"
}
},
"required": [
"type"
]
},
{
"title": "SelectParam",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "select"
},
"options": {
"type": "array",
"items": {
"type": [
"string",
"object"
],
"properties": {
"text": {
"description": "Name of the option to be shown in the editor",
"$ref": "#/definitions/localizedText"
},
"value": {
"description": "Option value to be used internally by the plugin",
"type": "string"
}
},
"required": [
"text",
"value"
],
"additionalProperties": false
}
}
},
"required": [
"type",
"options"
]
},
{
"title": "ComboParam",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "combo"
},
"options": {
"type": "array",
"items": {
"$ref": "#/definitions/localizedText"
}
}
},
"required": [
"type",
"options"
]
},
{
"allOf": [{
"title": "ArrayParam",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "array"
}
},
"required": [
"type"
]
},
{
"oneOf": [{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/extendedParameterType"
}
},
"required": [
"items"
]
},
{
"$ref": "#/definitions/structType"
}
]
}
]
},
{
"title": "StructParam",
"$ref": "#/definitions/structType"
}
]
}
]
},
"struct": {
"title": "Struct",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"params": {
"type": "array",
"items": {
"$ref": "#/definitions/parameter"
}
}
},
"additionalProperties": false,
"required": [
"name",
"params"
]
},
"command": {
"title": "Command",
"type": "object",
"properties": {
"name": {
"description": "Command name to be used internally be the plugin",
"type": "string"
},
"text": {
"description": "Command label to be shown in the editor",
"$ref": "#/definitions/localizedText"
},
"description": {
"description": "Command description to be shown in the editor",
"$ref": "#/definitions/localizedText"
},
"args": {
"type": "array",
"items": {
"allOf": [{
"$ref": "#/definitions/parameter"
},
{
"not": {
"type": "object",
"properties": {
"children": {}
},
"required": [
"children"
]
}
}
]
}
}
},
"additionalProperties": false,
"required": [
"name",
"text",
"description"
]
}
}
}