From 0380207991abea443534a0a24860db25ba53f047 Mon Sep 17 00:00:00 2001 From: QuazChick <79767058+QuazChick@users.noreply.github.com> Date: Tue, 2 Apr 2024 08:55:24 +0100 Subject: [PATCH] Add Texture Set schema (#266) --- README.md | 1 + source/compress_specification.json | 1 + source/resource/textures/texture_set.json | 111 ++++++++++++++++++++++ vscode-settings.json | 4 + 4 files changed, 117 insertions(+) create mode 100644 source/resource/textures/texture_set.json diff --git a/README.md b/README.md index 7ecd85e3..74a5d22a 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ JSON validation can give snippets for sub items, as well as description, but thi - [Sounds](resource/sounds/sound_definitions.json) - [Terrain texture](resource/textures/terrain_texture.json) - [Terrain list](resource/textures/texture_list.json) +- [Texture Set](resource/textures/texture_set.json) ## License diff --git a/source/compress_specification.json b/source/compress_specification.json index 131a523d..a2d4d851 100644 --- a/source/compress_specification.json +++ b/source/compress_specification.json @@ -17,6 +17,7 @@ { "Source": "./resource/textures/flipbook_textures.json", "Destination": "../resource/textures/flipbook_textures.json" }, { "Source": "./resource/textures/item_texture.json", "Destination": "../resource/textures/item_texture.json" }, { "Source": "./resource/textures/texture_list.json", "Destination": "../resource/textures/texture_list.json" }, + { "Source": "./resource/textures/texture_set.json", "Destination": "../resource/textures/texture_set.json" }, { "Source": "./resource/items/items.json", "Destination": "../resource/items/items.json" }, { "Source": "./resource/models/entity/model_entity.json", "Destination": "../resource/models/entity/model_entity.json" }, { "Source": "./resource/materials/materials.json", "Destination": "../resource/materials/materials.json" }, diff --git a/source/resource/textures/texture_set.json b/source/resource/textures/texture_set.json new file mode 100644 index 00000000..4135c06e --- /dev/null +++ b/source/resource/textures/texture_set.json @@ -0,0 +1,111 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "blockception.minecraft.resource.texture.texture_set", + "type": "object", + "additionalProperties": false, + "properties": { + "format_version": { "$ref": "../../general/format_version.json" }, + "minecraft:texture_set": { + "title": "Texture Set", + "description": "Texture Sets are used to define multiple PBR layers for a texture resource.", + "type": "object", + "additionalProperties": false, + "required": ["color"], + "properties": { + "color": { "$ref": "#/definitions/color" }, + "heightmap": { "$ref": "#/definitions/heightmap" }, + "metalness_emissive_roughness": { "$ref": "#/definitions/mer" }, + "normal": { "$ref": "#/definitions/normal" } + } + } + }, + "definitions": { + "color": { + "title": "Color", + "description": "This is an RGB 3-channel image (defaults to uniform alpha of 1.0), or an RGBA 4-channel image, or a 4 value array for a uniform color with alpha.", + "examples": [[255, 255, 255, 255]], + "oneOf": [ + { "type": "string" }, + { + "type": "array", + "items": [ + { + "title": "Red", + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + { + "title": "Green", + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + { + "title": "Blue", + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + { + "title": "Alpha", + "type": "integer", + "default": 255, + "minimum": 0, + "maximum": 255 + } + ] + } + ] + }, + "normal": { + "title": "Normal Map", + "description": "This is a 3-channel normal map image (or 4-channel where the 4th channel is ignored). This layer and the \"heightmap\" layer should not both be defined at the same time.", + "type": "string" + }, + "heightmap": { + "title": "Heightmap", + "description": "1-channel layer image or a single value in this JSON file for a uniform heightmap. This layer and the \"normal\" layer should not both be defined at the same time.", + "examples": [255], + "oneOf": [ + { "type": "string" }, + { + "type": "integer", + "minimum": 0, + "maximum": 255 + } + ] + }, + "mer": { + "title": "Metalness Emissive Roughness", + "description": "This is a 3-channel image (or 4-channel where the 4th channel is ignored) or a 3-value array for a uniform MER. RGB images map Red to Metalness, Green to Emissive, and Blue to Roughness.", + "examples": [[255, 255, 255]], + "oneOf": [ + { "type": "string" }, + { + "type": "array", + "items": [ + { + "title": "Red", + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + { + "title": "Green", + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + { + "title": "Blue", + "type": "integer", + "minimum": 0, + "maximum": 255 + } + ] + } + ] + } + } +} diff --git a/vscode-settings.json b/vscode-settings.json index 1d8866f4..30682536 100644 --- a/vscode-settings.json +++ b/vscode-settings.json @@ -94,6 +94,10 @@ "fileMatch": ["texture_list.{json,jsonc,json5}"], "url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/resource/textures/texture_list.json" }, + { + "fileMatch": ["*.texture_set.{json,jsonc,json5}"], + "url": "https://raw.githubusercontent.com/Blockception/Minecraft-bedrock-json-schemas/main/resource/textures/texture_set.json" + }, { "fileMatch": [ "resource_packs/*/items/*.{json,jsonc,json5}",