Adding ui-json schemas (#188)

This commit is contained in:
Daan Verstraten
2023-10-24 00:31:52 +02:00
committed by GitHub
parent 6643219664
commit 325b02b2e3
17 changed files with 1875 additions and 0 deletions

View File

@@ -25,6 +25,9 @@
{ "Source": "./resource/sounds/sound_definitions.json", "Destination": "../resource/sounds/sound_definitions.json" },
{ "Source": "./resource/sounds.json", "Destination": "../resource/sounds.json" },
{ "Source": "./resource/textures/terrain_texture.json", "Destination": "../resource/textures/terrain_texture.json" },
{ "Source": "./resource/ui/ui.json", "Destination": "../resource/ui/ui.json" },
{ "Source": "./resource/ui/_ui_defs.json", "Destination": "../resource/ui/_ui_defs.json" },
{ "Source": "./resource/ui/ui.json", "Destination": "../resource/ui/ui.json" },
{ "Source": "./behavior/animation_controllers/animation_controller.json", "Destination": "../behavior/animation_controllers/animation_controller.json" },
{ "Source": "./behavior/animations/animations.json", "Destination": "../behavior/animations/animations.json" },
{ "Source": "./behavior/biomes/biomes.json", "Destination": "../behavior/biomes/biomes.json" },

View File

@@ -0,0 +1,12 @@
{
"title": "Global Variables",
"description": "Global variables that can be used in any JSON file.",
"type": "object",
"propertyNames": {
"pattern": "^\\$[a-zA-Z0-9_]+$"
},
"additionalProperties": {
"title": "Global Variable",
"type": ["array", "boolean", "integer", "number", "string"]
}
}

View File

@@ -0,0 +1,17 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"title": "UI definitions",
"type": "object",
"properties": {
"ui_defs": {
"title": "UI definitions",
"type": "array",
"items": {
"type": "string",
"title": "UI definition path",
"description": "Path to a UI definition file.",
"examples": ["ui/button.json", "ui/checkbox.json"]
}
}
}
}

View File

@@ -0,0 +1,6 @@
{
"title": "Anchor",
"description": "An anchor is a reference to an element in the UI.",
"type": "string",
"enum": ["bottom", "bottom_left", "bottom_right", "bottom_middle", "center", "left", "left_middle", "right", "right_middle", "top", "top_left", "top_right", "top_middle"]
}

View File

@@ -0,0 +1,5 @@
{
"title": "Any",
"description": "An any value.",
"type": ["array", "boolean", "integer", "number", "object", "string"]
}

View File

@@ -0,0 +1,14 @@
{
"title": "Boolean",
"description": "A boolean value.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "string",
"$ref": "./item_ref.json"
}
],
"examples": ["true", "false", "$variable", "($variable)"]
}

View File

@@ -0,0 +1,40 @@
{
"definitions": {
"color_item": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"oneOf": [
{
"type": "string",
"description": "A variable",
"$ref": "./item_ref.json"
},
{
"type": "array",
"description": "A size with width and height.",
"items": [
{
"title": "Red",
"type": "string",
"description": "A variable",
"$ref": "#/definitions/color_item"
},
{
"title": "Green",
"type": "string",
"description": "A variable",
"$ref": "#/definitions/color_item"
},
{
"title": "Blue",
"type": "string",
"description": "A variable",
"$ref": "#/definitions/color_item"
}
]
}
]
}

View File

@@ -0,0 +1,14 @@
{
"title": "Integer",
"description": "A integer value.",
"oneOf": [
{
"type": "integer"
},
{
"type": "string",
"$ref": "./item_ref.json"
}
],
"examples": [0, 1, 2, "$variable", "($variable)"]
}

View File

@@ -0,0 +1,35 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"anyOf": [
{
"title": "Item reference",
"description": "A reference to an item: using the following syntax: [element_name]@[namespace_reference].[element_name_reference]",
"type": "string",
"examples": ["button@minecraft", "button@minecraft:ui"],
"pattern": "^[a-zA-Z0-9_]*@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)?$"
},
{
"title": "Item reference",
"description": "A reference to an item: using the following syntax: [namespace_reference].[element_name_reference]",
"type": "string",
"examples": ["button@minecraft", "button@minecraft:ui"],
"pattern": "[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)?$"
},
{
"title": "Variable reference",
"description": "A variable is a reference to a value that can be used in the UI.",
"type": "string",
"anyOf": [
{
"pattern": "^\\$[a-zA-Z0-9_]+$"
},
{
"pattern": "^#[a-zA-Z0-9_]+$"
},
{
"pattern": "^\\(.*\\)$"
}
]
}
]
}

View File

@@ -0,0 +1,14 @@
{
"title": "Number",
"description": "A Number value.",
"oneOf": [
{
"type": "number"
},
{
"type": "string",
"$ref": "./item_ref.json"
}
],
"examples": [0, 1, 2, "$variable", "($variable)"]
}

View File

@@ -0,0 +1,51 @@
{
"title": "Size",
"description": "The size of the element.",
"definitions": {
"size_coord": {
"title": "Size Coord",
"description": "A size coordinate.",
"oneOf": [
{
"type": "string",
"enum": ["default", "fill"]
},
{
"type": "string",
"pattern": "^[0-9]+(px|%)$"
},
{
"type": "integer",
"minimum": 0
}
],
"examples": ["default", "fill", "100px", "100%", "100% - 2px"]
}
},
"oneOf": [
{
"type": "string",
"description": "A variable",
"$ref": "./item_ref.json"
},
{
"type": "array",
"description": "A size with width and height.",
"items": [
{
"title": "Width",
"type": "string",
"description": "A variable",
"$ref": "#/definitions/size_coord"
},
{
"title": "Height",
"type": "string",
"description": "A variable",
"$ref": "#/definitions/size_coord"
}
]
}
],
"examples": ["default", "fill", ["100%", "100%"]]
}

View File

@@ -0,0 +1,5 @@
{
"title": "String",
"description": "A string value.",
"anyOf": [{ "type": "string" }, { "type": "string", "$ref": "./item_ref.json" }]
}

View File

@@ -0,0 +1,20 @@
{
"title": "Variable",
"description": "A variable is a reference to a value that can be used in the UI.",
"type": "string",
"anyOf": [
{
"type": "string",
"pattern": "^\\$[a-zA-Z0-9_]+$"
},
{
"type": "string",
"pattern": "^#[a-zA-Z0-9_]+$"
},
{
"type": "string",
"pattern": "^\\(.*\\)$"
}
],
"examples": ["$variable", "($variable)"]
}

View File

@@ -0,0 +1,47 @@
{
"definitions": {
"size_coord": {
"oneOf": [
{
"type": "string",
"enum": ["default", "fill"]
},
{
"type": "string",
"pattern": "^[0-9]+(px|%)$"
},
{
"type": "integer",
"minimum": 0
}
],
"examples": ["default", "fill", "100px", "100%", "100% - 2px"]
}
},
"oneOf": [
{
"type": "string",
"description": "A variable",
"$ref": "./item_ref.json"
},
{
"type": "array",
"description": "A size with width and height.",
"items": [
{
"title": "Width",
"type": "string",
"description": "A variable",
"$ref": "#/definitions/size_coord"
},
{
"title": "Height",
"type": "string",
"description": "A variable",
"$ref": "#/definitions/size_coord"
}
]
}
],
"examples": ["default", "fill", ["100%", "100%"]]
}

View File

@@ -0,0 +1,55 @@
{
"definitions": {
"size_coord": {
"oneOf": [
{
"type": "string",
"enum": ["default", "fill"]
},
{
"type": "string",
"pattern": "^[0-9]+(px|%)$"
},
{
"type": "integer",
"minimum": 0
}
],
"examples": ["default", "fill", "100px", "100%", "100% - 2px"]
}
},
"oneOf": [
{
"type": "string",
"description": "A variable",
"$ref": "./item_ref.json"
},
{
"type": "array",
"description": "A size with width and height.",
"items": [
{
"title": "X",
"description": "A variable",
"$ref": "#/definitions/size_coord"
},
{
"title": "Y",
"description": "A variable",
"$ref": "#/definitions/size_coord"
},
{
"title": "Width",
"description": "A variable",
"$ref": "#/definitions/size_coord"
},
{
"title": "Height",
"description": "A variable",
"$ref": "#/definitions/size_coord"
}
]
}
],
"examples": ["default", "fill", ["100%", "100%"]]
}

1525
source/resource/ui/ui.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -138,6 +138,18 @@
"fileMatch": ["terrain_texture.{json,jsonc,json5}"],
"url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/resource/textures/terrain_texture.json"
},
{
"fileMatch": ["ui/_ui_defs.{json,jsonc,json5}"],
"url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/resource/ui/_ui_defs.json"
},
{
"fileMatch": ["ui/_global_variables.{json,jsonc,json5}"],
"url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/resource/ui/_global_variables.json"
},
{
"fileMatch": ["ui/*.{json,jsonc,json5}", "ui/**/*.{json,jsonc,json5}"],
"url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/resource/ui/ui.json"
},
{
"fileMatch": [
"behavior_packs/*/animation_controllers/*.{json,jsonc,json5}",