192 lines
4.3 KiB
JSON
192 lines
4.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://agrarian.local/schemas/tile_registry.schema.json",
|
|
"title": "Agrarian Terrain Tile Registry",
|
|
"type": "object",
|
|
"required": ["schema_version", "grid_scheme", "tiles"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"schema_version": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"grid_scheme": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"tiles": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/tile"
|
|
}
|
|
}
|
|
},
|
|
"$defs": {
|
|
"tile_status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"unknown",
|
|
"queued",
|
|
"source_data_found",
|
|
"generated",
|
|
"validated",
|
|
"packaged",
|
|
"published",
|
|
"deprecated",
|
|
"blocked"
|
|
]
|
|
},
|
|
"tile": {
|
|
"type": "object",
|
|
"required": [
|
|
"tile_id",
|
|
"display_name",
|
|
"grid",
|
|
"status",
|
|
"biome_primary",
|
|
"generation_version",
|
|
"package_version",
|
|
"neighbors",
|
|
"sources"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"tile_id": {
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9_]+$"
|
|
},
|
|
"display_name": {
|
|
"type": "string"
|
|
},
|
|
"grid": {
|
|
"$ref": "#/$defs/grid"
|
|
},
|
|
"status": {
|
|
"$ref": "#/$defs/tile_status"
|
|
},
|
|
"biome_primary": {
|
|
"type": "string"
|
|
},
|
|
"biome_secondary": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"resource_hints": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"generation_version": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"package_version": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"neighbors": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"n": { "type": "string" },
|
|
"ne": { "type": "string" },
|
|
"e": { "type": "string" },
|
|
"se": { "type": "string" },
|
|
"s": { "type": "string" },
|
|
"sw": { "type": "string" },
|
|
"w": { "type": "string" },
|
|
"nw": { "type": "string" }
|
|
}
|
|
},
|
|
"sources": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/source"
|
|
}
|
|
},
|
|
"notes": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"grid": {
|
|
"type": "object",
|
|
"required": [
|
|
"projection",
|
|
"utm_zone",
|
|
"easting_min_m",
|
|
"northing_min_m",
|
|
"easting_max_m",
|
|
"northing_max_m",
|
|
"tile_size_m",
|
|
"center_latitude",
|
|
"center_longitude"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"projection": {
|
|
"type": "string"
|
|
},
|
|
"utm_zone": {
|
|
"type": "string"
|
|
},
|
|
"easting_min_m": {
|
|
"type": "integer"
|
|
},
|
|
"northing_min_m": {
|
|
"type": "integer"
|
|
},
|
|
"easting_max_m": {
|
|
"type": "integer"
|
|
},
|
|
"northing_max_m": {
|
|
"type": "integer"
|
|
},
|
|
"tile_size_m": {
|
|
"type": "integer",
|
|
"const": 1000
|
|
},
|
|
"center_latitude": {
|
|
"type": "number",
|
|
"minimum": -90,
|
|
"maximum": 90
|
|
},
|
|
"center_longitude": {
|
|
"type": "number",
|
|
"minimum": -180,
|
|
"maximum": 180
|
|
}
|
|
}
|
|
},
|
|
"source": {
|
|
"type": "object",
|
|
"required": ["source_kind", "source_name", "coverage_status"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"source_kind": {
|
|
"type": "string"
|
|
},
|
|
"source_name": {
|
|
"type": "string"
|
|
},
|
|
"source_uri": {
|
|
"type": "string"
|
|
},
|
|
"license_name": {
|
|
"type": "string"
|
|
},
|
|
"source_version": {
|
|
"type": "string"
|
|
},
|
|
"coverage_status": {
|
|
"type": "string",
|
|
"enum": ["needed", "candidate", "confirmed", "missing", "not_applicable"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|