diff --git a/.vscode/easy.code-snippets b/.vscode/easy.code-snippets index 797c08044..5df024d55 100644 --- a/.vscode/easy.code-snippets +++ b/.vscode/easy.code-snippets @@ -11,6 +11,10 @@ "prefix": "json.object", "body": "\"title\": \"\",\n\"description\": \"\",\n\"type\": \"object\", \n\"additionalProperties\": false,\n\"properties\": {}" }, + "array": { + "prefix": "json.array", + "body": "\"title\": \"\",\n\"description\": \"\",\n\"type\": \"array\", \n\"items\": {\n \"type\": \"\"\n}" + }, "number": { "prefix": "json.number", "body": "\"title\": \"\",\n\"description\": \"\",\n\"type\": \"number\", \n\"minimum\": 0" diff --git a/source/behavior/biomes/biomes.json b/source/behavior/biomes/biomes.json index ca6862368..913e225a6 100644 --- a/source/behavior/biomes/biomes.json +++ b/source/behavior/biomes/biomes.json @@ -1,39 +1,27 @@ { "$schema": "http://json-schema.org/draft-07/schema", - "$id": "minecraft.behavior.biomes", + "$id": "blockception.minecraft.behavior.biome", + "required": ["format_version", "minecraft:biome"], "type": "object", - "examples": [{ "plains": { "format_version": "1.20.80" } }], - "additionalProperties": { - "type": "object", - "title": "Biomes", - "description": "The definition of a biome.", - "additionalProperties": { - "title": "Tag", - "type": "object", - "description": "Components with no namespace are treated as `tags': any name consisting of alphanumeric characters, `.` and `_` is permitted; the tag is attached to the biome so that either code or data may check for its existence; tag components may not have member fields.", - "additionalProperties": false - }, - "properties": { - "format_version": { "$ref": "../../general/format_version.json" }, - - "minecraft:capped_surface": { "$ref": "./components/capped_surface.json" }, - "minecraft:climate": { "$ref": "./components/climate.json" }, - "minecraft:consolidated_features": { "$ref": "./components/consolidated_features.json" }, - "minecraft:creature_spawn_probability": { "$ref": "./components/creature_spawn_probability.json" }, - "minecraft:frozen_ocean_surface": { "$ref": "./components/frozen_ocean_surface.json" }, - "minecraft:legacy_world_generation_rules": { - "$ref": "./components/legacy_world_generation_rules.json" - }, - "minecraft:mesa_surface": { "$ref": "./components/mesa_surface.json" }, - "minecraft:mountain_parameters": { "$ref": "./components/mountain_parameters.json" }, - "minecraft:nether_generation_rules": { "$ref": "./components/nether_generation_rules.json" }, - "minecraft:nether_surface": { "$ref": "./components/nether_surface.json" }, - "minecraft:overworld_generation_rules": { "$ref": "./components/overworld_generation_rules.json" }, - "minecraft:overworld_height": { "$ref": "./components/overworld_height.json" }, - "minecraft:surface_material_adjustments": { "$ref": "./components/surface_material_adjustments.json" }, - "minecraft:surface_parameters": { "$ref": "./components/surface_parameters.json" }, - "minecraft:swamp_surface": { "$ref": "./components/swamp_surface.json" }, - "minecraft:the_end_surface": { "$ref": "./components/the_end_surface.json" } + "title": "Biome Behavior", + "description": "The minecraft biome behavior specification.", + "additionalProperties": false, + "properties": { + "format_version": { "$ref": "../../general/format_version.json" }, + "minecraft:biome": { "$ref": "./format/minecraft.biome.json" } + }, + "defaultSnippets": [ + { + "label": "New biome", + "body": { + "format_version": "${1:1.21.80}", + "minecraft:biome": { + "description": { + "identifier": "$2:${3:${TM_FILENAME/[\\.].*//}}" + }, + "components": "^{$4}" + } + } } - } -} + ] +} \ No newline at end of file diff --git a/source/behavior/biomes/components/climate.json b/source/behavior/biomes/components/climate.json deleted file mode 100644 index f2c9fb449..000000000 --- a/source/behavior/biomes/components/climate.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.climate", - "title": "Climate", - "description": "Describes temperature, humidity, precipitation, etc. Biomes without this component will have default values.", - "type": "object", - "minProperties": 0, - "maxProperties": 7, - "additionalProperties": false, - "properties": { - "temperature": { "title": "Temperature", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "number" }, - "downfall": { "title": "Downfall", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "number" }, - "red_spores": { "title": "Red Spores", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "number" }, - "blue_spores": { "title": "Blue Spores", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "number" }, - "ash": { "title": "Ash", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "number" }, - "white_ash": { "title": "White Ash", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "number" }, - "snow_accumulation": { - "title": "Snow Accumulation", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", - "type": "array", - "items": [ - { - "type": "number" - }, - { - "type": "number" - } - ] - } - } -} diff --git a/source/behavior/biomes/components/consolidated_features.json b/source/behavior/biomes/components/consolidated_features.json deleted file mode 100644 index 9d587764e..000000000 --- a/source/behavior/biomes/components/consolidated_features.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$id": "minecraft.behavior.biomes.components.minecraft.consolidated_features", - "title": "Consolidated Features", - "description": "UNDOCUMENTED", - "type": "object", - "additionalProperties": false, - "properties": {} -} diff --git a/source/behavior/biomes/components/legacy_world_generation_rules.json b/source/behavior/biomes/components/legacy_world_generation_rules.json deleted file mode 100644 index 84e9a4854..000000000 --- a/source/behavior/biomes/components/legacy_world_generation_rules.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.legacy_world_generation_rules", - "title": "Legacy World Generation Rules", - "description": "Additional world generation control applicable only to legacy limited worlds.", - "type": "object", - "additionalProperties": false, - "properties": {} -} diff --git a/source/behavior/biomes/components/mesa_surface.json b/source/behavior/biomes/components/mesa_surface.json deleted file mode 100644 index 04cfdef79..000000000 --- a/source/behavior/biomes/components/mesa_surface.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.mesa_surface", - "title": "Mesa Surface", - "description": "Similar to overworld_surface. Adds colored strata and optional pillars.", - "type": "object", - "minProperties": 0, - "maxProperties": 10, - "additionalProperties": false, - "properties": { - "top_material": { "title": "Top Material", "description": "Controls the block type used for the surface of this biome.", "string": "string" }, - "mid_material": { - "title": "Mid Material", - "description": "Controls the block type used in a layer below the surface of this biome.", - "string": "string" - }, - "sea_floor_material": { - "title": "Sea Floor Material", - "description": "Controls the block type used as a floor for bodies of water in this biome.", - "string": "boostringlean" - }, - "foundation_material": { - "title": "Foundation Material", - "description": "Controls the block type used deep underground in this biome.", - "string": "string" - }, - "sea_material": { - "title": "Sea Material", - "description": "Controls the block type used for the bodies of water in this biome.", - "string": "string" - }, - "sea_floor_depth": { - "title": "Sea Floor Depth", - "description": "Controls how deep below the world water level the floor should occur.", - "type": "integer" - }, - "clay_material": { "title": "Clay Material", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "string" }, - "hard_clay_material": { "title": "Hard Clay Material", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "string" }, - "bryce_pillars": { "title": "Bryce Pillars", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "boolean" }, - "has_forest": { "title": "Has Forest", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "boolean" } - } -} diff --git a/source/behavior/biomes/components/nether_surface.json b/source/behavior/biomes/components/nether_surface.json deleted file mode 100644 index 391d64570..000000000 --- a/source/behavior/biomes/components/nether_surface.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.nether_surface", - "title": "Nether Surface", - "description": "Use default Minecraft Nether terrain generation.", - "type": "object", - "additionalProperties": false, - "properties": {} -} diff --git a/source/behavior/biomes/components/overworld_height.json b/source/behavior/biomes/components/overworld_height.json deleted file mode 100644 index 8850a6bcb..000000000 --- a/source/behavior/biomes/components/overworld_height.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.overworld_height", - "title": "Overworld Height", - "description": "Noise parameters used to drive terrain height in the Overworld.", - "type": "object", - "minProperties": 0, - "maxProperties": 2, - "additionalProperties": false, - "properties": { - "noise_params": { - "title": "Noise Params", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", - "type": "array", - "items": [ - { - "type": "number" - }, - { - "type": "number" - } - ] - }, - "noise_type": { - "title": "Noise Type", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", - "type": "string", - "enum": ["stone_beach", "deep_ocean", "default", "default_mutated", "lowlands", "river", "ocean", "taiga", "mountains", "highlands", "mushroom", "less_extreme", "extreme", "beach", "swamp"] - } - } -} diff --git a/source/behavior/biomes/components/capped_surface.json b/source/behavior/biomes/format/components/capped_surface.json similarity index 54% rename from source/behavior/biomes/components/capped_surface.json rename to source/behavior/biomes/format/components/capped_surface.json index 4d2592a80..0bc64b5a4 100644 --- a/source/behavior/biomes/components/capped_surface.json +++ b/source/behavior/biomes/format/components/capped_surface.json @@ -1,5 +1,5 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.capped_surface", + "$id": "blockception.minecraft.behavior.biomes.minecraft.capped_surface", "title": "Capped Surface", "description": "Generates surface on blocks with non-solid blocks above or below.", "type": "object", @@ -11,10 +11,7 @@ "description": "Materials used for the surface ceiling.", "minItems": 1, "items": { - "title": "Block Reference", - "description": "A block reference.", - "$comment": "UNDOCUMENTED", - "type": "string" + "$ref": "../../../../general/block/reference.json" } }, "floor_materials": { @@ -22,18 +19,23 @@ "description": "Materials used for the surface floor.", "minItems": 1, "items": { - "title": "Block Reference", - "description": "A block reference.", - "$comment": "UNDOCUMENTED", - "type": "string" + "$ref": "../../../../general/block/reference.json" } }, - "sea_material": { "title": "Sea Material", "description": "Material used to replace air blocks below sea level.", "type": "string" }, + "sea_material": { + "title": "Sea Material", + "description": "Material used to replace air blocks below sea level.", + "$ref": "../../../../general/block/reference.json" + }, "foundation_material": { "title": "Foundation Material", "description": "Material used to repalce solid blocks that are not surface blocks.", - "type": "string" + "$ref": "../../../../general/block/reference.json" }, - "beach_material": { "title": "Beach Material", "description": "Material used to decorate surface near sea level.", "type": "string" } + "beach_material": { + "title": "Beach Material", + "description": "Material used to decorate surface near sea level.", + "$ref": "../../../../general/block/reference.json" + } } } diff --git a/source/behavior/biomes/format/components/climate.json b/source/behavior/biomes/format/components/climate.json new file mode 100644 index 000000000..22b8d80ff --- /dev/null +++ b/source/behavior/biomes/format/components/climate.json @@ -0,0 +1,52 @@ +{ + "$id": "blockception.minecraft.behavior.biomes.minecraft.climate", + "title": "Climate", + "description": "Describes temperature, humidity, precipitation, etc. Biomes without this component will have default values.", + "type": "object", + "additionalProperties": false, + "properties": { + "ash": { + "title": "Ash", + "description": "Density of ash precipitation visuals.", + "type": "number" + }, + "blue_spores": { + "title": "Blue Spores", + "description": "Density of blue spore precipitation visuals.", + "type": "number" + }, + "downfall": { + "title": "Downfall", + "description": "Amount that precipitation affects colors and block changes.", + "type": "number" + }, + "red_spores": { + "title": "Red Spores", + "description": "Density of blue spore precipitation visuals.", + "type": "number" + }, + "snow_accumulation": { + "title": "Snow Accumulation", + "description": "Minimum and maximum snow level, each multiple of 0.125 is another snow layer.", + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ] + }, + "temperature": { + "title": "Temperature", + "description": "Temperature affects a variety of visual and behavioral things, including snow and ice placement, sponge drying, and sky color.", + "type": "number" + }, + "white_ash": { + "title": "White Ash", + "description": "Density of white ash precipitation visuals.", + "type": "number" + } + } +} diff --git a/source/behavior/biomes/components/creature_spawn_probability.json b/source/behavior/biomes/format/components/creature_spawn_probability.json similarity index 84% rename from source/behavior/biomes/components/creature_spawn_probability.json rename to source/behavior/biomes/format/components/creature_spawn_probability.json index a803a2ef2..f73f5c744 100644 --- a/source/behavior/biomes/components/creature_spawn_probability.json +++ b/source/behavior/biomes/format/components/creature_spawn_probability.json @@ -1,5 +1,5 @@ { - "$id": "minecraft.behavior.biomes.components.minecraft.creature_spawn_probability", + "$id": "blockception.minecraft.behavior.biomes.minecraft.creature_spawn_probability", "title": "Creature Spawn Probability", "description": "Probability that creatures will spawn within the biome when a chunk is generated.", "type": "object", diff --git a/source/behavior/biomes/components/frozen_ocean_surface.json b/source/behavior/biomes/format/components/frozen_ocean_surface.json similarity index 61% rename from source/behavior/biomes/components/frozen_ocean_surface.json rename to source/behavior/biomes/format/components/frozen_ocean_surface.json index bfed691f5..a39314518 100644 --- a/source/behavior/biomes/components/frozen_ocean_surface.json +++ b/source/behavior/biomes/format/components/frozen_ocean_surface.json @@ -1,32 +1,35 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.frozen_ocean_surface", + "$id": "blockception.minecraft.behavior.biomes.minecraft.frozen_ocean_surface", "title": "Frozen Ocean Surface", "description": "Similar to overworld_surface. Adds icebergs.", "type": "object", - "minProperties": 0, - "maxProperties": 6, "additionalProperties": false, + "required": ["top_material", "mid_material", "sea_floor_material", "foundation_material", "sea_material", "sea_floor_depth"], "properties": { - "top_material": { "title": "Top Material", "description": "Controls the block type used for the surface of this biome.", "string": "string" }, + "top_material": { + "title": "Top Material", + "description": "Controls the block type used for the surface of this biome.", + "$ref": "../../../../general/block/reference.json" + }, "mid_material": { "title": "Mid Material", "description": "Controls the block type used in a layer below the surface of this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_floor_material": { "title": "Sea Floor Material", "description": "Controls the block type used as a floor for bodies of water in this biome.", - "string": "boostringlean" + "$ref": "../../../../general/block/reference.json" }, "foundation_material": { "title": "Foundation Material", "description": "Controls the block type used deep underground in this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_material": { "title": "Sea Material", "description": "Controls the block type used for the bodies of water in this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_floor_depth": { "title": "Sea Floor Depth", diff --git a/source/behavior/biomes/format/components/mesa_surface.json b/source/behavior/biomes/format/components/mesa_surface.json new file mode 100644 index 000000000..b9d41b7af --- /dev/null +++ b/source/behavior/biomes/format/components/mesa_surface.json @@ -0,0 +1,71 @@ +{ + "$id": "blockception.minecraft.behavior.biomes.minecraft.mesa_surface", + "title": "Mesa Surface", + "description": "Similar to overworld_surface. Adds colored strata and optional pillars.", + "type": "object", + "additionalProperties": false, + "required": [ + "top_material", + "mid_material", + "bryce_pillars", + "clay_material", + "foundation_material", + "hard_clay_material", + "has_forest", + "sea_floor_depth", + "sea_floor_material", + "sea_material" + ], + "properties": { + "top_material": { + "title": "Top Material", + "description": "Controls the block type used for the surface of this biome.", + "$ref": "../../../../general/block/reference.json" + }, + "mid_material": { + "title": "Mid Material", + "description": "Controls the block type used in a layer below the surface of this biome.", + "$ref": "../../../../general/block/reference.json" + }, + "sea_floor_material": { + "title": "Sea Floor Material", + "description": "Controls the block type used as a floor for bodies of water in this biome.", + "$ref": "../../../../general/block/reference.json" + }, + "foundation_material": { + "title": "Foundation Material", + "description": "Controls the block type used deep underground in this biome.", + "$ref": "../../../../general/block/reference.json" + }, + "sea_material": { + "title": "Sea Material", + "description": "Controls the block type used for the bodies of water in this biome.", + "$ref": "../../../../general/block/reference.json" + }, + "sea_floor_depth": { + "title": "Sea Floor Depth", + "description": "Controls how deep below the world water level the floor should occur.", + "type": "integer" + }, + "clay_material": { + "title": "Clay Material", + "description": "Base clay block to use.", + "$ref": "../../../../general/block/reference.json" + }, + "hard_clay_material": { + "title": "Hard Clay Material", + "description": "Hardened clay block to use.", + "$ref": "../../../../general/block/reference.json" + }, + "bryce_pillars": { + "title": "Bryce Pillars", + "description": "Whether the mesa generates with pillars.", + "type": "boolean" + }, + "has_forest": { + "title": "Has Forest", + "description": "Places coarse dirt and grass at high altitudes.", + "type": "boolean" + } + } +} diff --git a/source/behavior/biomes/components/mountain_parameters.json b/source/behavior/biomes/format/components/mountain_parameters.json similarity index 61% rename from source/behavior/biomes/components/mountain_parameters.json rename to source/behavior/biomes/format/components/mountain_parameters.json index 915aab53c..1d6c9b191 100644 --- a/source/behavior/biomes/components/mountain_parameters.json +++ b/source/behavior/biomes/format/components/mountain_parameters.json @@ -1,50 +1,49 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.mountain_parameters", - "title": "Mountain parameters", + "$id": "blockception.minecraft.behavior.biomes.minecraft.mountain_parameters", + "title": "Mountain Parameters", "description": "Noise parameters used to drive mountain terrain generation in Overworld.", "type": "object", "additionalProperties": false, - "minProperties": 0, - "maxProperties": 3, "properties": { "steep_material_adjustment": { "type": "object", - "title": "Steep material adjustment", + "title": "Steep Material Adjustment", "description": "Defines surface material for steep slopes.", "additionalProperties": false, "properties": { "material": { - "type": "string", "title": "Material", - "description": "Block type use as steep material." + "description": "Block type use as steep material.", + "$ref": "../../../../general/block/reference.json" }, "north_slopes": { "type": "boolean", - "title": "North slopes", - "description": "Enable for north facing slopes." + "title": "North Slopes", + "description": "Enable for north-facing slopes." }, "south_slopes": { "type": "boolean", - "title": "South slopes", - "description": "Enable for south facing slopes." + "title": "South Slopes", + "description": "Enable for south-facing slopes." }, "west_slopes": { "type": "boolean", - "title": "West slopes", - "description": "Enable for west facing slopes." + "title": "West Slopes", + "description": "Enable for west-facing slopes." }, "east_slopes": { "type": "boolean", - "title": "East slopes", - "description": "Enable for east facing slopes." + "title": "East Slopes", + "description": "Enable for east-facing slopes." } } }, "top_slide": { - "title": "Top slide", + "title": "Top Slide", "description": "Controls the density tapering that happens at the top of the world to prevent terrain from reaching too high.", "type": "object", "additionalProperties": false, + "required": ["enabled"], "properties": { "enabled": { "title": "Enabled", diff --git a/source/behavior/biomes/components/nether_generation_rules.json b/source/behavior/biomes/format/components/multinoise_generation_rules.json similarity index 79% rename from source/behavior/biomes/components/nether_generation_rules.json rename to source/behavior/biomes/format/components/multinoise_generation_rules.json index 5ff9704ff..89d3fe7f4 100644 --- a/source/behavior/biomes/components/nether_generation_rules.json +++ b/source/behavior/biomes/format/components/multinoise_generation_rules.json @@ -1,5 +1,5 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.nether_generation_rules", + "$id": "blockception.minecraft.behavior.biomes.minecraft.multinoise_generation_rules", "title": "Nether Generation Rules", "description": "Controls how this biome is instantiated (and then potentially modified) during world generation of the nether.", "type": "object", @@ -25,6 +25,10 @@ "description": "Weirdness with which this biome should selected, relative to other biomes.", "type": "number" }, - "weight": { "title": "Weight", "description": "Weight with which this biome should selected, relative to other biomes.", "type": "number" } + "weight": { + "title": "Weight", + "description": "Weight with which this biome should selected, relative to other biomes.", + "type": "number" + } } } diff --git a/source/behavior/biomes/components/overworld_generation_rules.json b/source/behavior/biomes/format/components/overworld_generation_rules.json similarity index 55% rename from source/behavior/biomes/components/overworld_generation_rules.json rename to source/behavior/biomes/format/components/overworld_generation_rules.json index d83950070..84353ed51 100644 --- a/source/behavior/biomes/components/overworld_generation_rules.json +++ b/source/behavior/biomes/format/components/overworld_generation_rules.json @@ -1,5 +1,5 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.overworld_generation_rules", + "$id": "blockception.minecraft.behavior.biomes.minecraft.overworld_generation_rules", "title": "Overworld Generation Rules", "description": "Control how this biome is instantiated (and then potentially modified) during world generation of the overworld.", "type": "object", @@ -9,39 +9,32 @@ "oneOf": [ { "type": "string", - "title": "Block Reference", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED" + "title": "Biome", + "description": "String name of a Biome." }, { "type": "array", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "Array of any size. If an array, each entry can be a Biome name string, or an array of size 2, where the first entry is a Biome name and the second entry is a positive integer representing how that Biome is weighted against other entries. If no weight is provided, a weight of 1 is used..", "title": "Block Reference", "minItems": 1, "items": { "oneOf": [ { "type": "string", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", - "title": "Block Reference" + "title": "Biome", + "description": "String name of a Biome." }, { "type": "array", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", "items": [ { - "title": "Biome Reference", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", - "type": "string" + "type": "string", + "title": "Biome", + "description": "String name of a Biome." }, { - "title": "_", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "title": "Weight", + "description": "A positive integer representing how that Biome is weighted against other entries..", "type": "integer" } ] @@ -55,36 +48,30 @@ "properties": { "hills_transformation": { "title": "Hills Transformation", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "What biome to switch to when converting to a hilly biome.", "$ref": "#/definitions/transformation" }, "mutate_transformation": { "title": "Mutate Transformation", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "What biome to switch to when converting to a mutated biome.", "$ref": "#/definitions/transformation" }, "river_transformation": { "title": "River Transformation", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "What biome to switch to when converting to a river biome (if not the Vanilla 'river' biome).", "$ref": "#/definitions/transformation" }, "shore_transformation": { "title": "Shore Transformation", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "What biome to switch to when adjacent to an ocean biome.", "$ref": "#/definitions/transformation" }, "generate_for_climates": { "title": "Generate For Climates", - "description": "Controls the world generation climate categories that this biome can spawn for. A single biome can be associated with multiple categories with different weightings.", + "description": "Controls the world generation climate categories that this biome can spawn for. A single biome can be associated with multiple categories with different weightings.", "type": "array", "items": { - "title": "_", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "An array of any size containing arrays of exactly two elements where the first entry is the climate category and the second is a positive integer.", "type": "array", "items": [ { @@ -96,7 +83,8 @@ { "title": "Weight", "description": "Weight with which this biome should be selected, relative to other biomes in the same category.", - "type": "integer" + "type": "integer", + "minimum": 1 } ] } diff --git a/source/behavior/biomes/format/components/overworld_height.json b/source/behavior/biomes/format/components/overworld_height.json new file mode 100644 index 000000000..38db17657 --- /dev/null +++ b/source/behavior/biomes/format/components/overworld_height.json @@ -0,0 +1,48 @@ +{ + "$id": "blockception.minecraft.behavior.biomes.minecraft.overworld_height", + "title": "Overworld Height", + "description": "Noise parameters used to drive terrain height in the Overworld.", + "type": "object", + "additionalProperties": false, + "properties": { + "noise_params": { + "title": "Noise Params", + "description": "Array of 2 Floats.", + "type": "array", + "items": [ + { + "title": "Depth", + "type": "number", + "description": "More negative means deeper underwater, while more positive means higher." + }, + { + "title": "Scale", + "type": "number", + "description": "Affects how much noise changes as it moves from the surface." + } + ] + }, + "noise_type": { + "title": "Noise Type", + "description": "Specifies a preset based on a built-in setting rather than manually using noise_params.", + "type": "string", + "enum": [ + "default", + "default_mutated", + "river", + "ocean", + "deep_ocean", + "lowlands", + "taiga", + "mountains", + "highlands", + "extreme", + "less_extreme", + "beach", + "stone_beach", + "mushroom", + "swamp" + ] + } + } +} diff --git a/source/behavior/biomes/format/components/replace_biomes.json b/source/behavior/biomes/format/components/replace_biomes.json new file mode 100644 index 000000000..9f142928e --- /dev/null +++ b/source/behavior/biomes/format/components/replace_biomes.json @@ -0,0 +1,47 @@ +{ + "$id": "blockception.minecraft.behavior.biomes.minecraft.replace_biomes", + "title": "Replace Biomes", + "description": "Replaces a specified portion of one or more Minecraft biomes.", + "type": "object", + "additionalProperties": false, + "properties": { + "replacements": { + "description": "List of biome replacement configurations. Retroactively adding a new replacement to the front of this list will cause the world generation to change. Please add any new replacements to the end of the list.", + "type": "array", + "items": { + "title": "Biome Replacement", + "description": "Represents the replacement information used to determine the placement of the overriding biome.", + "type": "object", + "properties": { + "dimension": { + "description": "Dimension in which this replacement can happen.", + "type": "string", + "const": "minecraft:overworld" + }, + "amount": { + "description": "Noise value used to determine whether or not the replacement is attempted, similar to a percentage. Must be in the range (0.0, 1.0].", + "type": "number", + "exclusiveMinimum": 0.0, + "maximum": 1.0 + }, + "targets": { + "description": "Biomes that are going to be replaced by the overriding biome.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "noise_frequency_scale": { + "description": "Scaling value used to alter the frequency of replacement attempts. A lower frequency will mean a bigger contiguous biome area that occurs less often. A higher frequency will mean smaller contiguous biome areas that occur more often. Must be in the range (0.0, 100.0].", + "type": "number", + "exclusiveMinimum": 0.0, + "maximum": 100.0 + } + }, + "required": ["dimension", "targets", "amount", "noise_frequency_scale"] + } + } + }, + "required": ["replacements"] +} diff --git a/source/behavior/biomes/components/surface_material_adjustments.json b/source/behavior/biomes/format/components/surface_material_adjustments.json similarity index 74% rename from source/behavior/biomes/components/surface_material_adjustments.json rename to source/behavior/biomes/format/components/surface_material_adjustments.json index b8b09ded7..c5dc61748 100644 --- a/source/behavior/biomes/components/surface_material_adjustments.json +++ b/source/behavior/biomes/format/components/surface_material_adjustments.json @@ -1,5 +1,5 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.surface_material_adjustments", + "$id": "blockception.minecraft.behavior.biomes.minecraft.surface_material_adjustments", "title": "Surface Material Adjustments", "description": "Specify fine-detail changes to blocks used in terrain generation (based on a noise function).", "type": "object", @@ -10,8 +10,7 @@ "description": "All adjustments that match the column's noise values will be applied in the order listed.", "items": { "title": "Adjustment", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "The specific blocks used for this surface adjustment.", "type": "object", "additionalProperties": false, "properties": { @@ -21,46 +20,45 @@ "type": "array", "items": [ { - "$ref": "../../../molang/number.json", + "$ref": "../../../../molang/number.json", "title": "Min" }, { - "$ref": "../../../molang/number.json", + "$ref": "../../../../molang/number.json", "title": "Max" } ] }, "materials": { "title": "Materials", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", + "description": "The specific blocks used for this surface adjustment.", "type": "object", "additionalProperties": false, "properties": { "top_material": { "title": "Top Material", "description": "Controls the block type used for the surface of this biome when this adjustment is active.", - "type": "string" + "$ref": "../../../../general/block/reference.json" }, "mid_material": { "title": "Mid Material", "description": "Controls the block type used in a layer below the surface of this biome when this adjustment is active.", - "type": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_floor_material": { "title": "Sea Floor Material", "description": "Controls the block type used as a floor for bodies of water in this biome when this adjustment is active.", - "type": "string" + "$ref": "../../../../general/block/reference.json" }, "foundation_material": { "title": "Top Materials", "description": "Controls the block type used deep underground in this biome when this adjustment is active.", - "type": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_material": { "title": "Top Materials", "description": "Controls the block type used in the bodies of water in this biome when this adjustment is active.", - "type": "string" + "$ref": "../../../../general/block/reference.json" } } }, @@ -80,6 +78,11 @@ "title": "Max" } ] + }, + "noise_frequency_scale": { + "title": "Noise Frequency Scale", + "description": "The scale to multiply by the position when accessing the noise value for the material adjustments.", + "type": "number" } } } diff --git a/source/behavior/biomes/components/surface_parameters.json b/source/behavior/biomes/format/components/surface_parameters.json similarity index 61% rename from source/behavior/biomes/components/surface_parameters.json rename to source/behavior/biomes/format/components/surface_parameters.json index d474a8732..4b3f03a04 100644 --- a/source/behavior/biomes/components/surface_parameters.json +++ b/source/behavior/biomes/format/components/surface_parameters.json @@ -1,32 +1,35 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.surface_parameters", + "$id": "blockception.minecraft.behavior.biomes.minecraft.surface_parameters", "title": "Surface Parameters", "description": "Control the blocks used for the default Minecraft Overworld terrain generation.", "type": "object", - "minProperties": 0, - "maxProperties": 6, + "required": ["foundation_material", "mid_material", "sea_floor_depth", "sea_floor_material", "sea_material", "top_material"], "additionalProperties": false, "properties": { - "top_material": { "title": "Top Material", "description": "Controls the block type used for the surface of this biome.", "string": "string" }, + "top_material": { + "title": "Top Material", + "description": "Controls the block type used for the surface of this biome.", + "$ref": "../../../../general/block/reference.json" + }, "mid_material": { "title": "Mid Material", "description": "Controls the block type used in a layer below the surface of this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_floor_material": { "title": "Sea Floor Material", "description": "Controls the block type used as a floor for bodies of water in this biome.", - "string": "boostringlean" + "$ref": "../../../../general/block/reference.json" }, "foundation_material": { "title": "Foundation Material", "description": "Controls the block type used deep underground in this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_material": { "title": "Sea Material", "description": "Controls the block type used for the bodies of water in this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_floor_depth": { "title": "Sea Floor Depth", diff --git a/source/behavior/biomes/components/swamp_surface.json b/source/behavior/biomes/format/components/swamp_surface.json similarity index 70% rename from source/behavior/biomes/components/swamp_surface.json rename to source/behavior/biomes/format/components/swamp_surface.json index ed6cb1970..8de96a243 100644 --- a/source/behavior/biomes/components/swamp_surface.json +++ b/source/behavior/biomes/format/components/swamp_surface.json @@ -1,36 +1,35 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.swamp_surface", + "$id": "blockception.minecraft.behavior.biomes.minecraft.swamp_surface", "title": "Swamp Surface", "description": "Similar to overworld_surface. Adds swamp surface details.", "type": "object", - "minProperties": 0, - "maxProperties": 6, + "required": ["foundation_material", "mid_material", "sea_floor_depth", "sea_floor_material", "sea_material", "top_material"], "additionalProperties": false, "properties": { "top_material": { "title": "Top Material", "description": "Controls the block type used for the surface of this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "mid_material": { "title": "Mid Material", "description": "Controls the block type used in a layer below the surface of this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_floor_material": { "title": "Sea Floor Material", "description": "Controls the block type used as a floor for bodies of water in this biome.", - "string": "boostringlean" + "$ref": "../../../../general/block/reference.json" }, "foundation_material": { "title": "Foundation Material", "description": "Controls the block type used deep underground in this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_material": { "title": "Sea Material", "description": "Controls the block type used for the bodies of water in this biome.", - "string": "string" + "$ref": "../../../../general/block/reference.json" }, "sea_floor_depth": { "title": "Sea Floor Depth", diff --git a/source/behavior/biomes/format/components/tags.json b/source/behavior/biomes/format/components/tags.json new file mode 100644 index 000000000..1531b4ce7 --- /dev/null +++ b/source/behavior/biomes/format/components/tags.json @@ -0,0 +1,20 @@ +{ + "$id": "blockception.minecraft.behavior.biomes.minecraft.tags", + "title": "Tags", + "description": "Attach arbitrary string tags to this biome.", + "type": "object", + "additionalProperties": false, + "required": ["tags"], + "properties": { + "tags": { + "title": "Tags", + "description": "Array of string tags used by other systems such as entity spawning", + "type": "array", + "uniqueItems": true, + "minItems": 1, + "items": { + "type": "string" + } + } + } +} diff --git a/source/behavior/biomes/components/the_end_surface.json b/source/behavior/biomes/format/components/the_end_surface.json similarity index 66% rename from source/behavior/biomes/components/the_end_surface.json rename to source/behavior/biomes/format/components/the_end_surface.json index 4138b42ce..c61915201 100644 --- a/source/behavior/biomes/components/the_end_surface.json +++ b/source/behavior/biomes/format/components/the_end_surface.json @@ -1,8 +1,8 @@ { - "$id": "minecraft.behavior.biomes.1.12.0.components.minecraft.the_end_surface", + "$id": "blockception.minecraft.behavior.biomes.minecraft.the_end_surface", "title": "End Surface", "description": "Use default Minecraft End terrain generation.", "type": "object", "additionalProperties": false, "properties": {} -} +} \ No newline at end of file diff --git a/source/behavior/biomes/format/minecraft.biome.json b/source/behavior/biomes/format/minecraft.biome.json new file mode 100644 index 000000000..299d4f5d5 --- /dev/null +++ b/source/behavior/biomes/format/minecraft.biome.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "blockception.minecraft.behavior.biomes", + "title": "Biome Definition", + "description": "A custom biome definition.", + "type": "object", + "additionalProperties": false, + "required": ["description", "components"], + "definitions": { + "components_ref": { + "type": "object", + "title": "Components", + "additionalProperties": false, + "properties": { + "minecraft:capped_surface": { "$ref": "./components/capped_surface.json" }, + "minecraft:climate": { "$ref": "./components/climate.json" }, + "minecraft:creature_spawn_probability": { "$ref": "./components/creature_spawn_probability.json" }, + "minecraft:frozen_ocean_surface": { "$ref": "./components/frozen_ocean_surface.json" }, + "minecraft:mesa_surface": { "$ref": "./components/mesa_surface.json" }, + "minecraft:mountain_parameters": { "$ref": "./components/mountain_parameters.json" }, + "minecraft:multinoise_generation_rules": { "$ref": "./components/multinoise_generation_rules.json" }, + "minecraft:overworld_generation_rules": { "$ref": "./components/overworld_generation_rules.json" }, + "minecraft:overworld_height": { "$ref": "./components/overworld_height.json" }, + "minecraft:replace_biomes": { "$ref": "./components/replace_biomes.json" }, + "minecraft:surface_material_adjustments": { "$ref": "./components/surface_material_adjustments.json" }, + "minecraft:surface_parameters": { "$ref": "./components/surface_parameters.json" }, + "minecraft:swamp_surface": { "$ref": "./components/swamp_surface.json" }, + "minecraft:tags": { "$ref": "./components/tags.json" }, + "minecraft:the_end_surface": { "$ref": "./components/the_end_surface.json" } + } + } + }, + "properties": { + "description": { + "title": "Biome Description", + "description": "The description for this biome.", + "type": "object", + "additionalProperties": false, + "required": ["identifier"], + "properties": { + "identifier": { + "title": "Identifier", + "description": "The identifier for this biome. The name must include a namespace and must not use the Minecraft namespace unless overriding a Vanilla biome.", + "type": "string", + "$ref": "../../../general/identifier.json" + } + } + }, + "components": { "$ref": "#/definitions/components_ref" } + } +} diff --git a/source/behavior/blocks/format/components/destruction_particles.json b/source/behavior/blocks/format/components/destruction_particles.json index 776c5c566..7cf53debb 100644 --- a/source/behavior/blocks/format/components/destruction_particles.json +++ b/source/behavior/blocks/format/components/destruction_particles.json @@ -1,21 +1,20 @@ { - "$id": "blockception.minecraft.behavior.blocks.minecraft.destruction_particles", - "title": "Destruction Particles", - "description": "[Experimental] Sets the particles that will be used when block is destroyed. This component can be omitted.", - "type": "object", - "additionalProperties": false, - "required": ["texture"], - "properties": { - "texture": { - "title": "Texture", - "description": "The texture name used for the particle.", - "type": "string" - }, - "tint_method": { - "title": "Tint Method", - "description": "Tint multiplied to the color. Tint method logic varies, but often refers to the \"rain\" and \"temperature\" of the biome the block is placed in to compute the tint.", - "type": "string", - "$ref": "../../../../general/vanilla/tint_methods.json" - } + "$id": "blockception.minecraft.behavior.blocks.minecraft.destruction_particles", + "title": "Destruction Particles", + "description": "[Experimental] Sets the particles that will be used when block is destroyed. This component can be omitted.", + "type": "object", + "additionalProperties": false, + "properties": { + "texture": { + "title": "Texture", + "description": "The texture name used for the particle.", + "type": "string" + }, + "tint_method": { + "title": "Tint Method", + "description": "Tint multiplied to the color. Tint method logic varies, but often refers to the \"rain\" and \"temperature\" of the biome the block is placed in to compute the tint.", + "type": "string", + "$ref": "../../../../general/vanilla/tint_methods.json" } -} \ No newline at end of file + } +} diff --git a/source/behavior/blocks/format/components/geometry.json b/source/behavior/blocks/format/components/geometry.json index 80fa49304..177d633a3 100644 --- a/source/behavior/blocks/format/components/geometry.json +++ b/source/behavior/blocks/format/components/geometry.json @@ -32,6 +32,12 @@ "title": "Block Culling Rule", "description": "The description identifer of the block culling rule used to cull this block. This identifier must match an existing geometry identifier in any of the currently loaded resource packs.", "type": "string" + }, + "culling_layer": { + "title": "Culling Layer", + "description": "A string that allows culling rule to group multiple blocks together when comparing them.", + "type": "string", + "examples": ["minecraft:culling_layer.undefined", "minecraft:culling_layer.leaves"] } } } diff --git a/source/behavior/blocks/format/components/material_instances.json b/source/behavior/blocks/format/components/material_instances.json index 108c90a55..e93941915 100644 --- a/source/behavior/blocks/format/components/material_instances.json +++ b/source/behavior/blocks/format/components/material_instances.json @@ -2,13 +2,13 @@ "$id": "blockception.minecraft.behavior.blocks.minecraft.material_instances", "title": "Material Instances", "description": "The material instances for a block. Maps face or material_instance names in a geometry file to an actual material instance. You can assign a material instance object to any of these faces: \"up\", \"down\", \"north\", \"south\", \"east\", \"west\", or \"*\". You can also give an instance the name of your choosing such as \"my_instance\", and then assign it to a face by doing \"north\":\"my_instance\".", - "required": [ ], + "required": [], "examples": [ - { "*": { } }, - { "custom_sides": { } }, - { "up": { } }, - { "down": { } }, - { "north": { } }, + { "*": {} }, + { "custom_sides": {} }, + { "up": {} }, + { "down": {} }, + { "north": {} }, { "south": "custom_sides" }, { "east": "custom_sides" }, { "west": "custom_sides" } @@ -51,7 +51,7 @@ "default": "opaque", "description": "The render method to use. Must be one of these options: opaque - Used for a regular block texture without an alpha layer. Does not allow for transparency or translucency. double_sided - Used for completely disabling backface culling. blend - Used for a block like stained glass. Allows for transparency and translucency (slightly transparent textures). alpha_test - Used for a block like the vanilla (unstained) glass. Does not allow for translucency, only fully opaque or fully transparent textures. Also disables backface culling.", "markdownDescription": "The render method to use. Must be one of these options: \nopaque - Used for a regular block texture without an alpha layer. Does not allow for transparency or translucency.\ndouble_sided - Used for completely disabling backface culling.\nblend - Used for a block like stained glass. Allows for transparency and translucency (slightly transparent textures).\nalpha_test - Used for a block like the vanilla (unstained) glass. Does not allow for translucency, only fully opaque or fully transparent textures. Also disables backface culling.", - "enum": [ "opaque", "double_sided", "blend", "alpha_test", "alpha_test_single_sided" ] + "enum": ["opaque", "double_sided", "blend", "alpha_test", "alpha_test_single_sided", "blend_to_opaque", "alpha_test_to_opaque", "alpha_test_single_sided_to_opaque"] }, "texture": { "title": "Texture", @@ -60,12 +60,12 @@ }, "isotropic": { "title": "Isotropic", - "description": "[Experimental] Controls rotating the face UVs randomly based on BlockPos", + "description": "Controls rotating the face UVs randomly based on BlockPos", "type": "boolean" }, "tint_method": { "title": "Tint Method", - "description": "[Experimental] Tint multiplied to the color. Tint method logic varies, but often refers to the \"rain\" and \"temperature\" of the biome the block is placed in to compute the tint.", + "description": "Tint multiplied to the color. Tint method logic varies, but often refers to the \"rain\" and \"temperature\" of the biome the block is placed in to compute the tint.", "type": "string", "$ref": "../../../../general/vanilla/tint_methods.json" } diff --git a/source/behavior/blocks/format/minecraft.block.json b/source/behavior/blocks/format/minecraft.block.json index e76001ab2..802588ad0 100644 --- a/source/behavior/blocks/format/minecraft.block.json +++ b/source/behavior/blocks/format/minecraft.block.json @@ -5,14 +5,13 @@ "description": "A custom block definition.", "type": "object", "additionalProperties": false, - "required": [ "description", "components" ], + "required": ["description", "components"], "definitions": { "components_ref": { "type": "object", "title": "Component", - "description": "UNDOCUMENTED.", - "$comment": "UNDOCUMENTED", - "additionalProperties": false, + "description": "The components of this block.", + "additionalProperties": true, "properties": { //Components "minecraft:collision_box": { "$ref": "./components/collision_box.json" }, @@ -40,17 +39,17 @@ "minecraft:tick": { "$ref": "./components/tick.json" }, "minecraft:entity_fall_on": { "$ref": "./components/entity_fall_on.json" }, // Tags - "tag:minecraft:diamond_tier_destructible": { }, - "tag:minecraft:iron_tier_destructible": { }, - "tag:minecraft:is_axe_item_destructible": { }, - "tag:minecraft:is_hoe_item_destructible": { }, - "tag:minecraft:is_mace_item_destructible": { }, - "tag:minecraft:is_pickaxe_item_destructible": { }, - "tag:minecraft:is_shears_item_destructible": { }, - "tag:minecraft:is_shovel_item_destructible": { }, - "tag:minecraft:is_sword_item_destructible": { }, - "tag:minecraft:netherite_tier_destructible": { }, - "tag:minecraft:stone_tier_destructible": { } + "tag:minecraft:diamond_tier_destructible": {}, + "tag:minecraft:iron_tier_destructible": {}, + "tag:minecraft:is_axe_item_destructible": {}, + "tag:minecraft:is_hoe_item_destructible": {}, + "tag:minecraft:is_mace_item_destructible": {}, + "tag:minecraft:is_pickaxe_item_destructible": {}, + "tag:minecraft:is_shears_item_destructible": {}, + "tag:minecraft:is_shovel_item_destructible": {}, + "tag:minecraft:is_sword_item_destructible": {}, + "tag:minecraft:netherite_tier_destructible": {}, + "tag:minecraft:stone_tier_destructible": {} }, "patternProperties": { "tag:.+": { @@ -94,7 +93,7 @@ "description": "The description for this block.", "type": "object", "additionalProperties": false, - "required": [ "identifier" ], + "required": ["identifier"], "properties": { "identifier": { "title": "Identifier", @@ -106,9 +105,9 @@ "title": "Menu Category", "description": "Specifies the menu category and group for the block, which determine where this block is placed in the inventory and crafting table container screens. If this field is omitted, the block will not appear in the inventory or crafting table container screens.", "type": "object", - "examples": [ { "category": "construction" } ], + "examples": [{ "category": "construction" }], "additionalProperties": false, - "required": [ "category" ], + "required": ["category"], "properties": { "category": { "$ref": "../../../general/vanilla/creative_category.json" diff --git a/source/behavior/entities/filters/filters.json b/source/behavior/entities/filters/filters.json index cbe602d20..d8fd369bc 100644 --- a/source/behavior/entities/filters/filters.json +++ b/source/behavior/entities/filters/filters.json @@ -2,7 +2,7 @@ "$id": "blockception.minecraft.behavior.entities.minecraft.filters", "title": "Filters", "$ref": "#/definitions/groups_spec", - "examples": [ { "test": "is_family", "subject": "other", "value": "example" }, { "test": "has_tag", "value": "example" }, [ ] ], + "examples": [{ "test": "is_family", "subject": "other", "value": "example" }, { "test": "has_tag", "value": "example" }, []], "definitions": { "filters_spec": { "defaultSnippets": [ @@ -38,10 +38,10 @@ } } ], - "examples": [ { "all_of": [ { } ] }, { "any_of": [ { } ] }, { "none_of": [ { } ] } ], + "examples": [{ "all_of": [{}] }, { "any_of": [{}] }, { "none_of": [{}] }], "oneOf": [ { - "propertyNames": { "enum": [ "all_of", "any_of", "none_of" ] }, + "propertyNames": { "enum": ["all_of", "any_of", "none_of"] }, "properties": { "all_of": { "title": "All Of", @@ -61,7 +61,7 @@ } }, { - "required": [ "test" ], + "required": ["test"], "properties": { "all_of": { "title": "All Of", @@ -94,6 +94,7 @@ { "if": { "properties": { "test": { "const": "has_container_open" } } }, "then": { "$ref": "./filters/has_container_open.json" } }, { "if": { "properties": { "test": { "const": "has_damage" } } }, "then": { "$ref": "./filters/has_damage.json" } }, { "if": { "properties": { "test": { "const": "has_equipment" } } }, "then": { "$ref": "./filters/has_equipment.json" } }, + { "if": { "properties": { "test": { "const": "has_equipment_tag" } } }, "then": { "$ref": "./filters/has_equipment_tag.json" } }, { "if": { "properties": { "test": { "const": "has_damaged_equipment" } } }, "then": { "$ref": "./filters/has_damaged_equipment.json" } }, { "if": { "properties": { "test": { "const": "has_mob_effect" } } }, "then": { "$ref": "./filters/has_mob_effect.json" } }, { "if": { "properties": { "test": { "const": "has_nametag" } } }, "then": { "$ref": "./filters/has_nametag.json" } }, diff --git a/source/behavior/entities/filters/filters/has_biome_tag.json b/source/behavior/entities/filters/filters/has_biome_tag.json index 5f66eaa86..7ab4df8e2 100644 --- a/source/behavior/entities/filters/filters/has_biome_tag.json +++ b/source/behavior/entities/filters/filters/has_biome_tag.json @@ -3,7 +3,7 @@ "type": "object", "title": "Has Biome Tag", "description": "Tests whether the biome the subject is in has the specified tag.", - "required": [ "value" ], + "required": ["value"], "properties": { "test": { "type": "string", @@ -19,14 +19,7 @@ "value": { "description": "The tag to look for.", "title": "Value", - "anyOf": [ - { - "$ref": "../../../../general/vanilla/biome_tag.json" - }, - { - "$ref": "../../../../general/vanilla/biome.json" - } - ] + "type": "string" } } } diff --git a/source/behavior/entities/filters/filters/has_equipment_tag.json b/source/behavior/entities/filters/filters/has_equipment_tag.json new file mode 100644 index 000000000..c46b54bef --- /dev/null +++ b/source/behavior/entities/filters/filters/has_equipment_tag.json @@ -0,0 +1,39 @@ +{ + "$id": "blockception.minecraft.behavior.entities.filters.has_equipment_tag", + "type": "object", + "title": "Has Equipment Tag", + "description": "Tests for the presence of an item with the named tag in the designated slot of the subject entity.", + "required": ["value"], + "properties": { + "test": { + "type": "string", + "const": "has_equipment_tag", + "description": "Tests for the presence of an item with the named tag in the designated slot of the subject entity.", + "title": "Test" + }, + "domain": { + "description": "The equipment location to test.", + "default": "any", + "enum": ["any", "inventory", "armor", "feet", "hand", "head", "leg", "torso"], + "title": "Domain" + }, + "operator": { + "$ref": "./types/operator.json" + }, + "subject": { + "$ref": "./types/subject.json" + }, + "value": { + "description": "The item name to look for.", + "type": "string", + "$ref": "../../../../general/item/identifier.json", + "title": "Value" + } + }, + "examples": [ + { + "test": "has_equipment_tag", + "value": "example" + } + ] +} diff --git a/source/behavior/entities/filters/filters/is_biome.json b/source/behavior/entities/filters/filters/is_biome.json index 82666534b..812005c91 100644 --- a/source/behavior/entities/filters/filters/is_biome.json +++ b/source/behavior/entities/filters/filters/is_biome.json @@ -18,8 +18,8 @@ }, "value": { "description": "The biome type to test.", - "$ref": "../../../../general/vanilla/biome.json", - "title": "Value" + "title": "Value", + "type": "string" } } } diff --git a/source/behavior/entities/filters/filters/types/test.json b/source/behavior/entities/filters/filters/types/test.json deleted file mode 100644 index 3ac3092fb..000000000 --- a/source/behavior/entities/filters/filters/types/test.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$id": "blockception.minecraft.behavior.entities.filters.test", - "title": "Test", - "type": "string", - "description": "The test operation.", - "enum": [ - "clock_time", - "distance_to_nearest_player", - "has_ability", - "has_biome_tag", - "has_component", - "has_damage", - "has_equipment", - "has_mob_effect", - "has_tag", - "has_trade_supply", - "hourly_clock_time", - "in_block", - "in_caravan", - "in_clouds", - "in_lava", - "in_water", - "in_water_or_rain", - "in_contact_with_water", - "is_altitude", - "is_avoiding_mobs", - "is_biome", - "is_brightness", - "is_climbing", - "is_color", - "is_daytime", - "is_difficulty", - "is_family", - "is_game_rule", - "is_humid", - "is_immobile", - "is_in_village", - "is_leashed", - "is_mark_variant", - "is_moving", - "is_navigating", - "is_owner", - "is_riding", - "is_skin_id", - "is_sneaking", - "is_snow_covered", - "is_target", - "is_temperature_type", - "is_temperature_value", - "is_underground", - "is_underwater", - "is_variant", - "is_visible", - "moon_intensity", - "moon_phase", - "on_ground", - "on_ladder", - "owner_distance" - ] -} diff --git a/source/behavior/entities/format/behaviors/float_tempt.json b/source/behavior/entities/format/behaviors/float_tempt.json new file mode 100644 index 000000000..6bbd5a290 --- /dev/null +++ b/source/behavior/entities/format/behaviors/float_tempt.json @@ -0,0 +1,90 @@ +{ + "$id": "blockception.minecraft.behavior.entities.minecraft.behavior.float_tempt", + "description": "Allows an entity to be tempted by a set item.", + "type": "object", + "title": "Float Tempt", + "additionalProperties": false, + "properties": { + "priority": { "$ref": "types/priority.json" }, + "speed_multiplier": { "$ref": "types/speed_multiplier.json" }, + "can_get_scared": { + "type": "boolean", + "default": false, + "description": "If true, the mob can stop being tempted if the player moves too fast while close to this mob.", + "title": "Can Get Scared" + }, + "can_tempt_while_ridden": { + "type": "boolean", + "default": false, + "title": "Can Tempt While Ridden", + "description": "If true, the mob can be tempted even if it has a passenger (i.e. if being ridden)." + }, + "can_tempt_vertically": { + "type": "boolean", + "default": false, + "title": "Can Tempt Vertically", + "description": "If true, vertical distance to the player will be considered when tempting." + }, + "items": { + "type": "array", + "title": "Items", + "description": "List of items this mob is tempted by.", + "items": { + "$ref": "../../../../general/item/descriptor.json" + } + }, + "sound_interval": { + "description": "Range of random ticks to wait between tempt sounds.", + "title": "Sound Interval", + "oneOf": [ + { + "type": "number", + "minimum": 0 + }, + { + "items": [ + { "type": "integer", "minimum": 0, "title": "Minimum" }, + { "type": "integer", "minimum": 0, "title": "Maximum" } + ] + } + ] + }, + "stop_distance": { + "title": "Stop Distance", + "description": "The distance at which the mob will stop following the player.", + "type": "number", + "default": 1.5, + "minimum": 0 + }, + "tempt_sound": { + "$ref": "../../../../general/sound_event.json", + "description": "Sound to play while the mob is being tempted.", + "title": "Tempt Sound" + }, + "within_radius": { + "type": "number", + "default": 0, + "description": "Distance in blocks this mob can get tempted by a player holding an item they like.", + "title": "Within Radius" + }, + "on_start": { + "title": "On Start", + "description": "Specifies the event to trigger when the goal starts", + "$ref": "../types/trigger.json" + }, + "on_end": { + "title": "On End", + "description": "Specifies the event to trigger when the goal ends", + "$ref": "../types/trigger.json" + } + }, + "examples": [ + { + "can_get_scared": false, + "can_tempt_while_ridden": true, + "can_tempt_vertically": true, + "items": [], + "within_radius": 0 + } + ] +} diff --git a/source/behavior/entities/format/behaviors/float_wander.json b/source/behavior/entities/format/behaviors/float_wander.json index 9d1842930..93bd76f89 100644 --- a/source/behavior/entities/format/behaviors/float_wander.json +++ b/source/behavior/entities/format/behaviors/float_wander.json @@ -9,6 +9,18 @@ "priority": { "$ref": "./types/priority.json" }, + "additional_collision_buffer": { + "title": "Additional Collision Buffer", + "description": "If true, the mob will have an additional buffer zone around it to avoid collisions with blocks when picking a position to wander to.", + "type": "boolean", + "default": false + }, + "allow_navigating_through_liquids": { + "title": "Allow Navigating Through Liquids", + "description": "If true allows the mob to navigate through liquids on its way to the target position.", + "type": "boolean", + "default": false + }, "xz_dist": { "type": "integer", "default": 10, @@ -39,12 +51,32 @@ "type": "boolean", "default": true }, + "navigate_around_surface": { + "title": "Navigate Around Surface", + "description": "If true, will prioritize finding random positions in the vicinity of surfaces, i.e. blocks that are not Air or Liquid.", + "type": "boolean", + "default": false + }, "random_reselect": { "type": "boolean", "default": false, "description": "If true, the mob will randomly pick a new point while moving to the previously selected one.", "title": "Random Reselect" }, + "surface_xz_dist": { + "title": "Surface XZ Dist", + "description": "The horizontal distance in blocks that the goal will check for a surface from a candidate position. Only valid when `navigate_around_surface` is true.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "surface_y_dist": { + "title": "Surface Y Dist", + "description": "The vertical distance in blocks that the goal will check for a surface from a candidate position. Only valid when `navigate_around_surface` is true.", + "type": "integer", + "minimum": 0, + "default": 0 + }, "use_home_position_restriction": { "title": "Use Home Position Restriction", "description": "If true, the mob will respect home position restrictions when choosing new target positions. If false, it will choose target position without considering home restrictions.", diff --git a/source/behavior/entities/format/behaviors/follow_mob.json b/source/behavior/entities/format/behaviors/follow_mob.json index e8b50c182..6b68c0df6 100644 --- a/source/behavior/entities/format/behaviors/follow_mob.json +++ b/source/behavior/entities/format/behaviors/follow_mob.json @@ -4,11 +4,20 @@ "title": "Follow Mob", "description": "Allows the mob to follow other mobs.", "additionalProperties": false, - "required": [], "properties": { "priority": { "$ref": "types/priority.json" }, + "filters": { + "title": "Filters", + "description": "If non-empty, provides criteria for filtering which nearby Mobs can be followed. If empty default criteria will be used, which will exclude Players, Squid variants, Fish variants, Tadpoles, Dolphins, and mobs of the same type as the owner of the Goal.", + "$ref": "../../filters/filters.json" + }, + "preferred_actor_type": { + "title": "Preferred Actor Type", + "description": "The type of actor to prefer following. If left unspecified, a random actor among those in range will be chosen.", + "type": "string" + }, "speed_multiplier": { "$ref": "./types/speed_multiplier.json" }, @@ -23,6 +32,12 @@ "default": 2, "description": "The distance in blocks this mob stops from the mob it is following.", "title": "Stop Distance" + }, + "use_home_position_restriction": { + "title": "Use Home Position Restriction", + "description": "If true, the mob will respect the 'minecraft:home' component's 'restriction_radius' field when choosing a target to follow. If false, it will choose target position without considering home restrictions.", + "type": "boolean", + "default": true } }, "examples": [ diff --git a/source/behavior/entities/format/behaviors/tempt.json b/source/behavior/entities/format/behaviors/tempt.json index 71c7ef43f..7cee25f25 100644 --- a/source/behavior/entities/format/behaviors/tempt.json +++ b/source/behavior/entities/format/behaviors/tempt.json @@ -49,6 +49,13 @@ } ] }, + "stop_distance": { + "title": "Stop Distance", + "description": "The distance at which the mob will stop following the player.", + "type": "number", + "default": 1.5, + "minimum": 0 + }, "tempt_sound": { "$ref": "../../../../general/sound_event.json", "description": "Sound to play while the mob is being tempted.", @@ -59,6 +66,16 @@ "default": 0, "description": "Distance in blocks this mob can get tempted by a player holding an item they like.", "title": "Within Radius" + }, + "on_start": { + "title": "On Start", + "description": "Specifies the event to trigger when the goal starts", + "$ref": "../types/trigger.json" + }, + "on_end": { + "title": "On End", + "description": "Specifies the event to trigger when the goal ends", + "$ref": "../types/trigger.json" } }, "examples": [ diff --git a/source/behavior/entities/format/components.json b/source/behavior/entities/format/components.json index 6cdfdca23..d1092fe68 100644 --- a/source/behavior/entities/format/components.json +++ b/source/behavior/entities/format/components.json @@ -250,6 +250,7 @@ "minecraft:behavior.flee_sun": { "$ref": "./behaviors/flee_sun.json" }, "minecraft:behavior.float_wander": { "$ref": "./behaviors/float_wander.json" }, "minecraft:behavior.float": { "$ref": "./behaviors/float.json" }, + "minecraft:behavior.float_tempt": { "$ref": "./behaviors/float_tempt.json" }, "minecraft:behavior.follow_caravan": { "$ref": "./behaviors/follow_caravan.json" }, "minecraft:behavior.follow_mob": { "$ref": "./behaviors/follow_mob.json" }, "minecraft:behavior.follow_owner": { "$ref": "./behaviors/follow_owner.json" }, diff --git a/source/behavior/entities/format/components/interact.json b/source/behavior/entities/format/components/interact.json index 562c84b83..9234643c8 100644 --- a/source/behavior/entities/format/components/interact.json +++ b/source/behavior/entities/format/components/interact.json @@ -157,24 +157,20 @@ "drop_item_slot": { "title": "Drop Item Slot", "type": "string", - "examples": [ - "slot.armor.head", - "slot.armor.chest", - "slot.armor.legs", - "slot.armor.feet" - ], + "examples": ["slot.armor.head", "slot.armor.chest", "slot.armor.legs", "slot.armor.feet"], "description": "The entity's equipment slot to remove and drop the item from, if any, upon successful interaction." }, + "drop_item_y_offset": { + "title": "Drop Item Y Offset", + "description": "Will offset the item drop position this amount in the y direction. Requires \"drop_item_slot\" to be specified.", + "type": "number", + "default": 0 + }, "equip_item_slot": { "title": "Equip Item Slot", "type": "string", "description": "The entity's equipment slot to equip the item to, if any, upon successful interaction.", - "examples": [ - "slot.armor.head", - "slot.armor.chest", - "slot.armor.legs", - "slot.armor.feet" - ] + "examples": ["slot.armor.head", "slot.armor.chest", "slot.armor.legs", "slot.armor.feet"] }, "repair_entity_item": { "title": "Repair Entity Item", @@ -191,12 +187,7 @@ "title": "Slot", "description": "The entity's slot containing the item to be repaired.", "type": "string", - "examples": [ - "slot.armor.head", - "slot.armor.chest", - "slot.armor.legs", - "slot.armor.feet" - ] + "examples": ["slot.armor.head", "slot.armor.chest", "slot.armor.legs", "slot.armor.feet"] } } } diff --git a/source/behavior/entities/format/components/leashable.json b/source/behavior/entities/format/components/leashable.json index bd8b99f0c..314f8030b 100644 --- a/source/behavior/entities/format/components/leashable.json +++ b/source/behavior/entities/format/components/leashable.json @@ -4,13 +4,7 @@ "title": "Leashable", "description": "Allows this entity to be leashed and defines the conditions and events for this entity when is leashed.", "additionalProperties": false, - "properties": { - "can_be_stolen": { - "type": "boolean", - "default": false, - "description": "If true, players can leash this entity even if it is already leashed to another mob.", - "title": "Can Be Stolen" - }, + "definitions": { "hard_distance": { "type": "number", "default": 6, @@ -23,6 +17,32 @@ "description": "Distance in blocks at which the leash breaks.", "title": "Maximum Distance" }, + "soft_distance": { + "type": "number", + "default": 4, + "description": "Distance in blocks at which the `spring` effect starts acting to keep this entity close to the entity that leashed it.", + "title": "Soft Distance" + } + }, + "properties": { + "can_be_stolen": { + "type": "boolean", + "default": false, + "description": "If true, players can leash this entity even if it is already leashed to another mob.", + "title": "Can Be Stolen" + }, + "on_unleash_interact_only": { + "title": "On Unleash Interact Only", + "description": "When set to true, \"on_unleash\" does not trigger when the entity gets unleashed for other reasons such as being stolen or the leash breaking.", + "type": "boolean", + "default": false + }, + "hard_distance": { + "$ref": "#/definitions/hard_distance" + }, + "max_distance": { + "$ref": "#/definitions/max_distance" + }, "on_leash": { "$ref": "../types/event_object.json", "description": "Event to call when this entity is leashed.", @@ -34,10 +54,31 @@ "title": "On Unleash" }, "soft_distance": { - "type": "number", - "default": 4, - "description": "Distance in blocks at which the `spring` effect starts acting to keep this entity close to the entity that leashed it.", - "title": "Soft Distance" + "$ref": "#/definitions/soft_distance" + }, + "presets": { + "title": "Presets", + "description": "Defines how this entity behaves when leashed to another entity. A preset is selected upon leashing and remains until the entity is leashed to something else. The first preset whose \"filter\" conditions are met will be applied; if none match, a default configuration is used instead.", + "type": "array", + "items": { + "title": "Preset", + "type": "object", + "additionalProperties": false, + "properties": { + "filter": { + "$ref": "../../filters/filters.json" + }, + "hard_distance": { + "$ref": "#/definitions/hard_distance" + }, + "max_distance": { + "$ref": "#/definitions/max_distance" + }, + "soft_distance": { + "$ref": "#/definitions/soft_distance" + } + } + } } }, "examples": [ diff --git a/source/behavior/entities/format/components/rideable.json b/source/behavior/entities/format/components/rideable.json index a5353fc6f..2518db02a 100644 --- a/source/behavior/entities/format/components/rideable.json +++ b/source/behavior/entities/format/components/rideable.json @@ -9,6 +9,38 @@ "additionalProperties": false, "type": "object", "properties": { + "dismount_mode": { + "title": "Dismount Mode", + "description": "Defines where riders are placed when dismounting this entity:\n- \"default\", riders are placed on a valid ground position around the entity, or at the center of the entity's collision box if none is found.\n- \"on_top_center\", riders are placed at the center of the top of the entity's collision box.", + "type": "string", + "enum": ["default", "on_top_center"] + }, + "on_rider_enter_event": { + "title": "On Rider Enter Event", + "description": "Event to execute on the owner entity when an entity starts riding it.", + "type": "string" + }, + "on_rider_exit_event": { + "title": "On Rider Exit Event", + "description": "Event to execute on the owner entity when an entity stops riding it.", + "type": "string" + }, + "third_person_camera_radius": { + "title": "Third Person Camera Radius", + "description": "Can be used to set a different camera radius when in third person or third person front camera. Value 0.0 is ignored.", + "type": "number", + "default": 0.0, + "minimum": 0.0, + "maximum": 64.0 + }, + "camera_relax_distance_smoothing": { + "title": "Camera Relax Distance Smoothing", + "description": "Adds springiness to the camera movement when the camera moves back to its radius after being pushed closer to the player by and obstacle. A higher value means a stiffer spring. Value 0.0 is ignored.", + "type": "number", + "default": 0.0, + "minimum": 0.0, + "maximum": 32.0 + }, "lock_rider_rotation": { "type": "number", "default": 181, diff --git a/source/behavior/items/format/minecraft.item.json b/source/behavior/items/format/minecraft.item.json index 44ebd9241..fb0ffdd23 100644 --- a/source/behavior/items/format/minecraft.item.json +++ b/source/behavior/items/format/minecraft.item.json @@ -1,7 +1,7 @@ { "$id": "blockception.minecraft.behavior.items", "additionalProperties": false, - "required": [ "description" ], + "required": ["description"], "type": "object", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", @@ -54,6 +54,7 @@ "components": { "type": "object", "description": "The components of this item.", + "additionalProperties": true, "properties": { "minecraft:allow_off_hand": { "$ref": "./components/allow_off_hand.json" }, "minecraft:block_placer": { "$ref": "./components/block_placer.json" }, diff --git a/source/behavior/trading/trading.json b/source/behavior/trading/trading.json index 670bd3818..7fab87801 100644 --- a/source/behavior/trading/trading.json +++ b/source/behavior/trading/trading.json @@ -10,7 +10,7 @@ { "tiers": [ { - "trades": [ { "wants": [ { "item": "minecraft:coal:0", "quantity": { "min": 16, "max": 24 } } ], "gives": [ { "item": "minecraft:emerald" } ] } ] + "trades": [{ "wants": [{ "item": "minecraft:coal:0", "quantity": { "min": 16, "max": 24 } }], "gives": [{ "item": "minecraft:emerald" }] }] } ] } @@ -32,7 +32,7 @@ "description": "UNDOCUMENTED.", "type": "array", "items": { - "$ref": "../../general/vanilla/biome.json" + "type": "string" } }, "quantity": { @@ -42,7 +42,7 @@ { "type": "object", "additionalProperties": false, - "required": [ "min", "max" ], + "required": ["min", "max"], "properties": { "min": { "type": "integer", "minimum": 1, "title": "Minimum" }, "max": { "type": "integer", "minimum": 1, "title": "Maximum" } @@ -57,7 +57,7 @@ "Functions": { "title": "Functions", "type": "array", - "items": { "type": "object", "required": [ "function" ], "$ref": "../loot_tables/functions.json" } + "items": { "type": "object", "required": ["function"], "$ref": "../loot_tables/functions.json" } }, "TradeArray": { "type": "array", @@ -66,7 +66,7 @@ "additionalProperties": false, "type": "object", "title": "Trade", - "required": [ "wants", "gives" ], + "required": ["wants", "gives"], "properties": { "gives": { "type": "array", @@ -87,7 +87,7 @@ { "type": "object", "additionalProperties": false, - "required": [ "min", "max" ], + "required": ["min", "max"], "properties": { "min": { "type": "integer", "minimum": 1, "title": "Minimum" }, "max": { "type": "integer", "minimum": 1, "title": "Maximum" } @@ -127,7 +127,7 @@ { "type": "object", "additionalProperties": false, - "required": [ "min", "max" ], + "required": ["min", "max"], "properties": { "min": { "type": "integer", "minimum": 1, "title": "Minimum" }, "max": { "type": "integer", "minimum": 1, "title": "Maximum" } @@ -167,7 +167,7 @@ "additionalProperties": false, "type": "object", "title": "Tier", - "required": [ "total_exp_required", "groups" ], + "required": ["total_exp_required", "groups"], "properties": { "trades": { "$ref": "#/definitions/TradeArray" }, "total_exp_required": { "title": "Total Experience Required", "type": "integer" }, diff --git a/source/behavior/worldgen/jigsaw_structures/format/minecraft.jigsaw.json b/source/behavior/worldgen/jigsaw_structures/format/minecraft.jigsaw.json index 5861633f3..8b4fdaa0b 100644 --- a/source/behavior/worldgen/jigsaw_structures/format/minecraft.jigsaw.json +++ b/source/behavior/worldgen/jigsaw_structures/format/minecraft.jigsaw.json @@ -5,7 +5,6 @@ "additionalProperties": false, "required": [ "description", - "heightmap_projection", "max_depth", "start_height", "start_pool", diff --git a/source/general/identifier.json b/source/general/identifier.json new file mode 100644 index 000000000..2dcd04951 --- /dev/null +++ b/source/general/identifier.json @@ -0,0 +1,7 @@ +{ + "$id": "blockception.minecraft.identifier", + "description": "A minecraft identifier.", + "pattern": "^[0-9a-zA-Z:_\\.\\-]+$", + "title": "Identifier", + "type": "string" +} diff --git a/source/general/vanilla/biome.json b/source/general/vanilla/biome.json deleted file mode 100644 index 6496d4e05..000000000 --- a/source/general/vanilla/biome.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "title": "Biome", - "description": "An in game biome", - "enum": [ - "bamboo_jungle", - "bamboo_jungle_hills", - "basalt_deltas", - "beach", - "birch_forest", - "birch_forest_hills", - "birch_forest_hills_mutated", - "birch_forest_mutated", - "cherry_grove", - "cold_beach", - "cold_ocean", - "cold_taiga", - "cold_taiga_hills", - "cold_taiga_mutated", - "crimson_forest", - "deep_cold_ocean", - "deep_frozen_ocean", - "deep_lukewarm_ocean", - "deep_ocean", - "deep_warm_ocean", - "deep_dark", - "desert", - "desert_hills", - "desert_mutated", - "dripstone_caves", - "extreme_hills", - "extreme_hills_edge", - "extreme_hills_mutated", - "extreme_hills_plus_trees", - "extreme_hills_plus_trees_mutated", - "flower_forest", - "forest", - "forest_hills", - "frozen_ocean", - "frozen_peaks", - "frozen_river", - "grove", - "hell", - "ice_mountains", - "ice_plains", - "ice_plains_spikes", - "jagged_peaks", - "jungle", - "jungle_edge", - "jungle_edge_mutated", - "jungle_hills", - "jungle_mutated", - "legacy_frozen_ocean", - "lukewarm_ocean", - "lush_caves", - "mangrove_swamp", - "meadow", - "mega_taiga", - "mega_taiga_hills", - "mesa", - "mesa_bryce", - "mesa_plateau", - "mesa_plateau_mutated", - "mesa_plateau_stone", - "mesa_plateau_stone_mutated", - "mushroom_island", - "mushroom_island_shore", - "ocean", - "plains", - "redwood_taiga_hills_mutated", - "redwood_taiga_mutated", - "river", - "roofed_forest", - "roofed_forest_mutated", - "savanna", - "savanna_mutated", - "savanna_plateau", - "savanna_plateau_mutated", - "snowy_slopes", - "soulsand_valley", - "stone_beach", - "stony_peaks", - "sunflower_plains", - "swampland", - "swampland_mutated", - "taiga", - "taiga_hills", - "taiga_mutated", - "the_end", - "warm_ocean", - "warped_forest" - ] -} diff --git a/source/general/vanilla/biome_tag.json b/source/general/vanilla/biome_tag.json deleted file mode 100644 index 9a9f327fe..000000000 --- a/source/general/vanilla/biome_tag.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "title": "Biome Tag", - "description": "An in game biome's tags", - "enum": [ - "animal", - "bamboo", - "bee_habitat", - "birch", - "caves", - "cold", - "deep", - "edge", - "frozen", - "hills", - "ice", - "lukewarm", - "mega", - "monster", - "mountain", - "mountains", - "mutated", - "nether", - "netherwart_forest", - "no_legacy_worldgen", - "ocean", - "overworld", - "overworld_generation", - "plateau", - "rare", - "roofed", - "shore", - "spawn_endermen", - "spawn_few_piglins", - "spawn_few_zombified_piglins", - "spawn_ghast", - "spawn_magma_cubes", - "spawn_many_magma_cubes", - "spawn_piglin", - "spawn_zombified_piglin", - "stone", - "swamp", - "warm" - ] -} diff --git a/source/resource/biomes/format/components/biome_music.json b/source/resource/biomes/format/components/biome_music.json index e6afe9898..a43d37cf3 100644 --- a/source/resource/biomes/format/components/biome_music.json +++ b/source/resource/biomes/format/components/biome_music.json @@ -5,10 +5,15 @@ "type": "object", "additionalProperties": false, "properties": { + "music_definition": { + "title": "Music Definition", + "description": "Music to be played when inside this biome. If left off or not found the default music will be determined by the dimension. Empty string will result in no music.", + "type": "string" + }, "volume_multiplier": { "title": "Volume Multiplier", "description": "Multiplier temporarily and gradually applied to music volume when within this biome.", - "type": "number", + "type": "number", "minimum": 0, "maximum": 1 } diff --git a/source/resource/biomes/format/components/water_appearance.json b/source/resource/biomes/format/components/water_appearance.json index 3cef724e9..d159375cc 100644 --- a/source/resource/biomes/format/components/water_appearance.json +++ b/source/resource/biomes/format/components/water_appearance.json @@ -3,7 +3,6 @@ "title": "Water Appearance", "description": "Set the water surface color used during rendering. Biomes without this component will have default water surface color behavior.", "type": "object", - "required": ["surface_color"], "additionalProperties": false, "properties": { "surface_color": { diff --git a/source/resource/block_culling/block_culling.json b/source/resource/block_culling/block_culling.json index 5a1942b56..828acf3cc 100644 --- a/source/resource/block_culling/block_culling.json +++ b/source/resource/block_culling/block_culling.json @@ -3,20 +3,20 @@ "$id": "blockception.minecraft.resource.block_culling", "title": "Block Culling", "description": "A resource pack file that helps the system determine how to change the appearance of this block.", - "type": "object", + "type": "object", "additionalProperties": false, "properties": { "format_version": { "$ref": "../../general/format_version.json" }, "minecraft:block_culling_rules": { "title": "Block Culling Rules", "description": "JSON container used for descriptions, especially the identifier for the name of the culled version of the block.", - "type": "object", + "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "Contains the identifier used by minecraft:geometry block components to refer to this culling data", - "type": "object", + "type": "object", "additionalProperties": false, "properties": { "identifier": { @@ -42,15 +42,21 @@ "rule": { "title": "Rule", "description": "The rules that specifies a \"geometry_part\" and \"direction\"", - "type": "object", + "type": "object", "additionalProperties": false, "properties": { "geometry_part": { "title": "Geometry Part", "description": "Specifies the bone, cube, and face that the block will be culled. The cube and face fields are optional to allow culling a specific face. Omitting these fields will cull the whole bone.", - "type": "object", + "type": "object", "additionalProperties": false, "properties": { + "condition": { + "title": "Condition", + "description": "It provides more control over which neighbor blocks will trigger a face or part to be culled.\n- \"default\" will pass the condition if the neighbor block is full and opaque. All conditions are an extension of \"default\", meaning a full and opaque neighbor will always be a passing condition, before the extended \"same_*\" condition is checked.\n- \"same_culling_layer\" will pass the condition if the neighbor block shares the same \"culling_layer\" as the block being occluded, defined in the geometry component. If either of the culling layers being compared is \"minecraft:culling_layer.undefined\", the condition will never pass.\n- \"same_block\" will pass the condition if the neighbor block has the same identifier.\n- \"same_block_permutation\" will pass the condition if the neighbor block has the same identifier and is the exact same permutation.", + "type": "string", + "enum": ["default", "same_culling_layer", "same_block", "same_block_permutation"] + }, "bone": { "title": "Bone", "description": "The bone within the geometry part", @@ -59,7 +65,7 @@ "cube": { "title": "Cube", "description": "The cube within the geometry part", - "type": "integer", + "type": "integer", "minimum": 0 }, "face": {