Add Recipemanager that loads recipes from YAML

This commit is contained in:
JonShard
2026-07-17 13:54:14 +02:00
parent 840908e9ff
commit 4d06e72bc1
133 changed files with 9121 additions and 175 deletions
+308
View File
@@ -0,0 +1,308 @@
$schema: "http://json-schema.org/draft-07/schema#"
$id: "res://addons/yaml/schema/godot_yaml.schema.yaml"
title: "Godot YAML schema definitions"
definitions:
variantTypes:
description: "Godot Variant types"
enum:
- "bool"
- "float"
- "int"
- "null"
- "AABB"
- "Array"
- "Basis"
- "Callable"
- "Color"
- "Dictionary"
- "NodePath"
- "Object"
- "PackedByteArray"
- "PackedColorArray"
- "PackedFloat32Array"
- "PackedFloat64Array"
- "PackedInt32Array"
- "PackedInt64Array"
- "PackedStringArray"
- "PackedVector2Array"
- "PackedVector3Array"
- "Plane"
- "Projection"
- "Quaternion"
- "Rect2"
- "Rect2i"
- "RID"
- "String"
- "StringName"
- "Transform2D"
- "Transform3D"
- "Variant"
- "Vector2"
- "Vector2i"
- "Vector3"
- "Vector3i"
- "Vector4"
- "Vector4i"
AABB:
x-yaml-tag: AABB
oneOf:
- type: object
properties:
position: { $ref: "#/definitions/Vector3" }
size: { $ref: "#/definitions/Vector3" }
required: [position, size]
additionalProperties: false
- type: array
items: { $ref: "#/definitions/Vector3" }
minItems: 2
maxItems: 2
Basis:
x-yaml-tag: Basis
oneOf:
- type: object
properties:
x: { $ref: "#/definitions/Vector3" }
y: { $ref: "#/definitions/Vector3" }
z: { $ref: "#/definitions/Vector3" }
required: [x, y, z]
additionalProperties: false
- type: array
items: { $ref: "#/definitions/Vector3" }
minItems: 3
maxItems: 3
Color:
x-yaml-tag: Color
oneOf:
- type: string
- type: object
properties:
r: { type: number }
g: { type: number }
b: { type: number }
a: { type: number }
required: [r, g, b]
additionalProperties: false
- type: array
items: { type: number }
minItems: 3
maxItems: 4
NodePath:
x-yaml-tag: NodePath
type: string
PackedByteArray:
x-yaml-tag: PackedByteArray
type: string
contentEncoding: base64
PackedColorArray:
x-yaml-tag: PackedColorArray
type: array
items: { $ref: "#/definitions/Color" }
PackedFloat32Array:
x-yaml-tag: PackedFloat32Array
type: array
items: { type: number }
PackedFloat64Array:
x-yaml-tag: PackedFloat64Array
type: array
items: { type: number }
PackedInt32Array:
x-yaml-tag: PackedInt32Array
type: array
items:
type: integer
minimum: -2147483648
maximum: 2147483647
PackedInt64Array:
x-yaml-tag: PackedInt64Array
type: array
items: { type: integer }
PackedStringArray:
x-yaml-tag: PackedStringArray
type: array
items: { type: string }
Plane:
x-yaml-tag: Plane
oneOf:
- type: object
properties:
normal: { $ref: "#/definitions/Vector3" }
d: { type: number }
required: [normal, d]
additionalProperties: false
- type: array
items:
- { $ref: "#/definitions/Vector3" }
- { type: number }
additionalItems: false
Projection:
x-yaml-tag: Projection
oneOf:
- type: object
properties:
x: { $ref: "#/definitions/Vector4" }
y: { $ref: "#/definitions/Vector4" }
z: { $ref: "#/definitions/Vector4" }
w: { $ref: "#/definitions/Vector4" }
required: [x, y, z, w]
additionalProperties: false
- type: array
items: { $ref: "#/definitions/Vector4" }
minItems: 4
maxItems: 4
Quaternion:
x-yaml-tag: Quaternion
oneOf:
- type: object
properties:
x: { type: number }
y: { type: number }
z: { type: number }
w: { type: number }
required: [x, y, z, w]
additionalProperties: false
- type: array
items: { type: number }
minItems: 4
maxItems: 4
Rect2:
x-yaml-tag: Rect2
oneOf:
- type: object
properties:
position: { $ref: "#/definitions/Vector2" }
size: { $ref: "#/definitions/Vector2" }
required: [position, size]
additionalProperties: false
- type: array
items: { $ref: "#/definitions/Vector2" }
minItems: 2
maxItems: 2
Rect2i:
x-yaml-tag: Rect2i
oneOf:
- type: object
properties:
position: { $ref: "#/definitions/Vector2i" }
size: { $ref: "#/definitions/Vector2i" }
required: [position, size]
additionalProperties: false
- type: array
items: { $ref: "#/definitions/Vector2i" }
minItems: 2
maxItems: 2
StringName:
x-yaml-tag: StringName
type: string
Transform2D:
x-yaml-tag: Transform2D
oneOf:
- type: object
properties:
x: { $ref: "#/definitions/Vector2" }
y: { $ref: "#/definitions/Vector2" }
origin: { $ref: "#/definitions/Vector2" }
required: [x, y, origin]
additionalProperties: false
- type: array
items: { $ref: "#/definitions/Vector2" }
minItems: 2
maxItems: 2
Transform3D:
x-yaml-tag: Transform3D
oneOf:
- type: object
properties:
basis: { $ref: "#/definitions/Basis" }
origin: { $ref: "#/definitions/Vector3" }
required: [basis, origin]
additionalProperties: false
- type: array
items:
- { $ref: "#/definitions/Basis" }
- { $ref: "#/definitions/Vector3" }
additionalItems: false
Vector2:
x-yaml-tag: Vector2
oneOf:
- type: object
properties:
x: { type: number }
y: { type: number }
required: [x, y]
additionalProperties: false
- type: array
items: { type: number }
minItems: 2
maxItems: 2
Vector2i:
x-yaml-tag: Vector2i
oneOf:
- type: object
properties:
x: { type: integer }
y: { type: integer }
required: [x, y]
additionalProperties: false
- type: array
items: { type: integer }
minItems: 2
maxItems: 2
Vector3:
x-yaml-tag: Vector3
oneOf:
- type: object
properties:
x: { type: number }
y: { type: number }
z: { type: number }
required: [x, y, z]
additionalProperties: false
- type: array
items: { type: number }
minItems: 3
maxItems: 3
Vector3i:
x-yaml-tag: Vector3i
oneOf:
- type: object
properties:
x: { type: integer }
y: { type: integer }
z: { type: integer }
required: [x, y, z]
additionalProperties: false
- type: array
items: { type: integer }
minItems: 3
maxItems: 3
Vector4:
x-yaml-tag: Vector4
oneOf:
- type: object
properties:
x: { type: number }
y: { type: number }
z: { type: number }
w: { type: number }
required: [x, y, z, w]
additionalProperties: false
- type: array
items: { type: number }
minItems: 4
maxItems: 4
Vector4i:
x-yaml-tag: Vector4i
oneOf:
- type: object
properties:
x: { type: integer }
y: { type: integer }
z: { type: integer }
w: { type: integer }
required: [x, y, z, w]
additionalProperties: false
- type: array
items: { type: integer }
minItems: 4
maxItems: 4
@@ -0,0 +1 @@
uid://dhpk13ljosq0d
@@ -0,0 +1,172 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://json-schema.org/draft-07/schema#",
"title": "Core schema meta-schema",
"definitions": {
"schemaArray": {
"type": "array",
"minItems": 1,
"items": { "$ref": "#" }
},
"nonNegativeInteger": {
"type": "integer",
"minimum": 0
},
"nonNegativeIntegerDefault0": {
"allOf": [
{ "$ref": "#/definitions/nonNegativeInteger" },
{ "default": 0 }
]
},
"simpleTypes": {
"enum": [
"array",
"boolean",
"integer",
"null",
"number",
"object",
"string"
]
},
"stringArray": {
"type": "array",
"items": { "type": "string" },
"uniqueItems": true,
"default": []
}
},
"type": ["object", "boolean"],
"properties": {
"$id": {
"type": "string",
"format": "uri-reference"
},
"$schema": {
"type": "string",
"format": "uri"
},
"$ref": {
"type": "string",
"format": "uri-reference"
},
"$comment": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"default": true,
"readOnly": {
"type": "boolean",
"default": false
},
"writeOnly": {
"type": "boolean",
"default": false
},
"examples": {
"type": "array",
"items": true
},
"multipleOf": {
"type": "number",
"exclusiveMinimum": 0
},
"maximum": {
"type": "number"
},
"exclusiveMaximum": {
"type": "number"
},
"minimum": {
"type": "number"
},
"exclusiveMinimum": {
"type": "number"
},
"maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
"minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
"pattern": {
"type": "string",
"format": "regex"
},
"additionalItems": { "$ref": "#" },
"items": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": true
},
"maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
"minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
"uniqueItems": {
"type": "boolean",
"default": false
},
"contains": { "$ref": "#" },
"maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
"minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
"required": { "$ref": "#/definitions/stringArray" },
"additionalProperties": { "$ref": "#" },
"definitions": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
"properties": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"default": {}
},
"patternProperties": {
"type": "object",
"additionalProperties": { "$ref": "#" },
"propertyNames": { "format": "regex" },
"default": {}
},
"dependencies": {
"type": "object",
"additionalProperties": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/stringArray" }
]
}
},
"propertyNames": { "$ref": "#" },
"const": true,
"enum": {
"type": "array",
"items": true,
"minItems": 1,
"uniqueItems": true
},
"type": {
"anyOf": [
{ "$ref": "#/definitions/simpleTypes" },
{
"type": "array",
"items": { "$ref": "#/definitions/simpleTypes" },
"minItems": 1,
"uniqueItems": true
}
]
},
"format": { "type": "string" },
"contentMediaType": { "type": "string" },
"contentEncoding": { "type": "string" },
"if": { "$ref": "#" },
"then": { "$ref": "#" },
"else": { "$ref": "#" },
"allOf": { "$ref": "#/definitions/schemaArray" },
"anyOf": { "$ref": "#/definitions/schemaArray" },
"oneOf": { "$ref": "#/definitions/schemaArray" },
"not": { "$ref": "#" }
},
"default": true
}
@@ -0,0 +1,322 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://json-schema.org/draft/2020-12/schema",
"$vocabulary": {
"https://json-schema.org/draft/2020-12/vocab/core": true,
"https://json-schema.org/draft/2020-12/vocab/applicator": true,
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
"https://json-schema.org/draft/2020-12/vocab/validation": true,
"https://json-schema.org/draft/2020-12/vocab/meta-data": true,
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
"https://json-schema.org/draft/2020-12/vocab/content": true
},
"$dynamicAnchor": "meta",
"title": "Core and Validation specifications meta-schema",
"$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
"type": [
"object",
"boolean"
],
"$defs": {
"anchorString": {
"type": "string",
"pattern": "^[A-Za-z_][-A-Za-z0-9._]*$"
},
"uriString": {
"type": "string",
"format": "uri"
},
"uriReferenceString": {
"type": "string",
"format": "uri-reference"
},
"schemaArray": {
"type": "array",
"minItems": 1,
"items": {
"$dynamicRef": "#meta"
}
},
"nonNegativeInteger": {
"type": "integer",
"minimum": 0
},
"nonNegativeIntegerDefault0": {
"$ref": "#/$defs/nonNegativeInteger",
"default": 0
},
"simpleTypes": {
"enum": [
"array",
"boolean",
"integer",
"null",
"number",
"object",
"string"
]
},
"stringArray": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"default": []
}
},
"properties": {
"definitions": {
"$comment": "\"definitions\" has been replaced by \"$defs\".",
"type": "object",
"additionalProperties": {
"$dynamicRef": "#meta"
},
"deprecated": true,
"default": {}
},
"dependencies": {
"$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
"type": "object",
"additionalProperties": {
"anyOf": [
{
"$dynamicRef": "#meta"
},
{
"$ref": "#/$defs/stringArray"
}
]
},
"deprecated": true,
"default": {}
},
"$recursiveAnchor": {
"$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
"$ref": "#/$defs/anchorString",
"deprecated": true
},
"$recursiveRef": {
"$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
"$ref": "#/$defs/uriReferenceString",
"deprecated": true
},
"$id": {
"$ref": "#/$defs/uriReferenceString",
"$comment": "Non-empty fragments not allowed.",
"pattern": "^[^#]*#?$"
},
"$schema": {
"$ref": "#/$defs/uriString"
},
"$ref": {
"$ref": "#/$defs/uriReferenceString"
},
"$anchor": {
"$ref": "#/$defs/anchorString"
},
"$dynamicRef": {
"$ref": "#/$defs/uriReferenceString"
},
"$dynamicAnchor": {
"$ref": "#/$defs/anchorString"
},
"$vocabulary": {
"type": "object",
"propertyNames": {
"$ref": "#/$defs/uriString"
},
"additionalProperties": {
"type": "boolean"
}
},
"$comment": {
"type": "string"
},
"$defs": {
"type": "object",
"additionalProperties": {
"$dynamicRef": "#meta"
}
},
"prefixItems": {
"$ref": "#/$defs/schemaArray"
},
"items": {
"$dynamicRef": "#meta"
},
"contains": {
"$dynamicRef": "#meta"
},
"additionalProperties": {
"$dynamicRef": "#meta"
},
"properties": {
"type": "object",
"additionalProperties": {
"$dynamicRef": "#meta"
},
"default": {}
},
"patternProperties": {
"type": "object",
"additionalProperties": {
"$dynamicRef": "#meta"
},
"propertyNames": {
"format": "regex"
},
"default": {}
},
"dependentSchemas": {
"type": "object",
"additionalProperties": {
"$dynamicRef": "#meta"
},
"default": {}
},
"propertyNames": {
"$dynamicRef": "#meta"
},
"if": {
"$dynamicRef": "#meta"
},
"then": {
"$dynamicRef": "#meta"
},
"else": {
"$dynamicRef": "#meta"
},
"allOf": {
"$ref": "#/$defs/schemaArray"
},
"anyOf": {
"$ref": "#/$defs/schemaArray"
},
"oneOf": {
"$ref": "#/$defs/schemaArray"
},
"not": {
"$dynamicRef": "#meta"
},
"unevaluatedItems": {
"$dynamicRef": "#meta"
},
"unevaluatedProperties": {
"$dynamicRef": "#meta"
},
"type": {
"anyOf": [
{
"$ref": "#/$defs/simpleTypes"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/simpleTypes"
},
"minItems": 1,
"uniqueItems": true
}
]
},
"const": true,
"enum": {
"type": "array",
"items": true
},
"multipleOf": {
"type": "number",
"exclusiveMinimum": 0
},
"maximum": {
"type": "number"
},
"exclusiveMaximum": {
"type": "number"
},
"minimum": {
"type": "number"
},
"exclusiveMinimum": {
"type": "number"
},
"maxLength": {
"$ref": "#/$defs/nonNegativeInteger"
},
"minLength": {
"$ref": "#/$defs/nonNegativeIntegerDefault0"
},
"pattern": {
"type": "string",
"format": "regex"
},
"maxItems": {
"$ref": "#/$defs/nonNegativeInteger"
},
"minItems": {
"$ref": "#/$defs/nonNegativeIntegerDefault0"
},
"uniqueItems": {
"type": "boolean",
"default": false
},
"maxContains": {
"$ref": "#/$defs/nonNegativeInteger"
},
"minContains": {
"$ref": "#/$defs/nonNegativeInteger",
"default": 1
},
"maxProperties": {
"$ref": "#/$defs/nonNegativeInteger"
},
"minProperties": {
"$ref": "#/$defs/nonNegativeIntegerDefault0"
},
"required": {
"$ref": "#/$defs/stringArray"
},
"dependentRequired": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/stringArray"
}
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"default": true,
"deprecated": {
"type": "boolean",
"default": false
},
"readOnly": {
"type": "boolean",
"default": false
},
"writeOnly": {
"type": "boolean",
"default": false
},
"examples": {
"type": "array",
"items": true
},
"format": {
"type": "string"
},
"contentEncoding": {
"type": "string"
},
"contentMediaType": {
"type": "string"
},
"contentSchema": {
"$dynamicRef": "#meta"
}
}
}