{ "$id": "blockception.minecraft.behavior.features", "examples": [{ "format_version": "1.17.0", "minecraft:ore_feature": { "description": { "identifier": "example:foo" }, "features": {} } }], "allOf": [ { "if": { "properties": { "format_version": { "type": "string", "const": "1.13.0" } } }, "then": { "$ref": "#/definitions/A" } }, { "properties": { "format_version": { "$ref": "#/definitions/CF" } } } ], "definitions": { "C": { "type": "string", "title": "Entity Identifier 1.8.0", "description": "The minecraft entity identifier", "examples": ["namespace:entity_name"], "pattern": "^[0-9a-zA-Z:_\\.\\-]+$" }, "B": { "title": "Aggregate Feature", "description": "'minecraft:aggregate_feature` places a collection of features in an arbitary order. All features in the collection use the same input position. Features should not depend on each other, as there is no guarantee on the order the features will be placed.\n Succeeds if: At lease one feature is placed successfully.\n Fails if: All features fail to be placed.", "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } }, "features": { "title": "Features", "description": "Collection of features to be placed one by one. No guarantee of order. All features use the same input position.", "type": "array", "minItems": 1, "items": { "title": "Feature", "description": "", "type": "string" } }, "early_out": { "type": "string", "title": "Early Out", "description": "LIKELY TO BE CHANGED: Do not continue placing features once either the first success or first failure has occurred.", "enum": ["none", "first_failure", "first_success"] } } }, "E": { "type": "string", "title": "Block Identifier 1.8.0", "description": "The minecraft block identifier", "pattern": "^[0-9a-zA-Z:_\\.\\-]+$" }, "F": { "title": "Molang Number", "description": "The minecraft molang definition that results in a float", "anyOf": [{ "type": "string", "minLength": 0 }, { "type": "number" }] }, "D": { "type": "object", "title": "Cave Carver Feature", "description": "`minecraft:cave_carver_feature` carves a cave through the world in the current chunk, and in every chunk around the current chunk in an 8 radial pattern. This feature will also only work when placed specifically in the pass \"pregeneration_pass\".", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } }, "fill_with": { "title": "Fill with", "description": "Reference to the block to fill the cave with.", "$ref": "#/definitions/E" }, "width_modifier": { "title": "Width modifier", "description": "How many blocks to increase the cave radius by, from the center point of the cave.", "$ref": "#/definitions/F" } } }, "H": { "type": "string", "title": "Molang / String", "description": "Molang definition", "format": "molang" }, "G": { "type": "object", "title": "Conditional list", "description": "`minecraft:conditional_list` Places the first suitable feature within a collection.\nThese conditional features will be evaluated in order.\nSucceeds if: A condition is successfully resolved.\nFails if: No condition is successfully resolved.\nExample use: assigning a feature to an expression", "additionalProperties": false, "required": ["description", "conditional_features"], "properties": { "description": { "title": "Description", "description": "", "type": "object", "required": ["identifier"], "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } }, "conditional_features": { "title": "Conditional Features", "description": "Array of Features, and their associated Conditions, for attempted placement. These features will be evaluated as ordered.", "type": "array", "items": { "title": "Conditional Feature", "type": "object", "description": "A Feature, and their associated Conditions, for attempted placement. These features will be evaluated as ordered.", "additionalProperties": false, "required": ["places_feature", "condition"], "properties": { "places_feature": { "title": "Places feature", "description": "Feature to be placed.", "$ref": "#/definitions/C" }, "condition": { "title": "Condition", "description": "Condition for placing associated Feature", "$ref": "#/definitions/H" } } } }, "early_out_scheme": { "title": "Early out scheme", "description": "Denote whether placement should end on first successful placement or first passed condition.", "type": "string", "enum": ["condition_success", "placement_success"] } } }, "I": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "J": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BA": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BB": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BC": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BD": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BE": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BF": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BG": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "BH": { "title": "Sequence Feature", "description": "`minecraft:sequence_feature` places a collection of features sequentially, in the order they appear in data. The output position of the previous feature is used as the input position for the next. For example, a tree feature is placed at (0, 0, 0) and places blocks up to (0, 10, 0). The next feature in the sequence begins at (0, 10, 0).\nSucceeds if: All features in the sequence are successfully placed.\nFails if: Any feature in the sequence fails to be placed. Features that have not yet been placed at the time of failure are skipped.", "type": "object", "additionalProperties": false, "required": ["description", "features"], "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } }, "features": { "title": "Features", "description": "List of features to be placed in sequence. The output position of the previous feature is used as the input position to the next.", "type": "array", "minItems": 1, "items": { "title": "Feature", "description": "A feature to be placed in sequence. The output position of the previous feature is used as the input position to the next.", "$ref": "#/definitions/C" } } } }, "BI_block_side": { "oneOf": [{ "type": "string" }, { "type": "array", "items": { "title": "UNDOCUMENTATED", "description": "UNDOCUMENTATED", "type": "string" } }] }, "BI": { "title": "Single block feature", "description": "`minecraft:single_block_feature` places a single block in the world. The `may_place_on` and `may_replace` fields are allowlists which specify where the block can be placed. If these fields are omitted, the block can be placed anywhere. The block's internal survivability and placement rules can optionally be enforced with the `enforce_survivability_rules` and `enforce_placement_rules` fields. These rules are specified per-block and are typically designed to produce high quality gameplay or natural behavior. However, enabling this enforcement may make it harder to debug placement failures.\n Succeeds if: The block is successfully placed in the world.\n Fails if: The block fails to be placed.", "type": "object", "additionalProperties": false, "required": ["description", "places_block", "enforce_placement_rules", "enforce_survivability_rules"], "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } }, "places_block": { "title": "Places block", "description": "Reference to the block to be placed.", "type": "string", "$ref": "#/definitions/E" }, "enforce_placement_rules": { "title": "Enforce Placement Rules", "description": "If true, enforce the block's canPlace check.", "type": "boolean" }, "enforce_survivability_rules": { "title": "Enforce Survivability Rules", "description": "If true, enforce the block's canSurvive check.", "type": "boolean" }, "may_attach_to": { "title": "May attach to", "description": "", "type": "object", "additionalProperties": false, "required": [], "properties": { "min_sides_must_attach": { "title": "Minimum sides must attach", "description": "UNDOCUMENTATED", "minimum": 1, "maximum": 4 }, "auto_rotate": { "title": "Auto rotate", "description": "Automatically rotate the block to attach sensibly." }, "top": { "title": "Top", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" }, "bottom": { "title": "Bottom", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" }, "north": { "title": "North", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" }, "south": { "title": "South", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" }, "east": { "title": "East", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" }, "west": { "title": "West", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" }, "all": { "title": "All", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" }, "sides": { "title": "Sides", "description": "UNDOCUMENTATED", "$ref": "#/definitions/BI_block_side" } } }, "may_replace": { "title": "May replace", "description": "A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.", "type": "array", "additionalProperties": false, "items": { "title": "Block", "description": "A block that may be replaced during placement. Omit this field to allow any block to be replaced.", "type": "string", "$ref": "#/definitions/E" } } } }, "BJ": { "title": "", "description": "`minecraft:snap_to_surface_feature` snaps the y-value of a feature placement pos to the floor or the ceiling within the provided `vertical_search_range`. The placement biome is preserved. \nIf the snap position goes outside of the placement biome, placement will fail.", "type": "object", "additionalProperties": false, "required": ["description", "feature_to_snap", "vertical_search_range"], "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } }, "feature_to_snap": { "title": "Feature to snap", "description": "Named reference of feature to be snapped", "type": "string", "$ref": "#/definitions/C" }, "vertical_search_range": { "title": "Vertical search range", "description": "Range to search for a floor or ceiling for snaping the feature.", "type": "number" }, "surface": { "title": "Surface", "description": "Defines the surface that the y-value of the placement position will be snapped to. Valid values: `ceiling` and `floor'", "type": "string", "enum": ["ceiling", "floor"] } } }, "CA": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "CB": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "CC": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "CD": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "CE": { "type": "object", "additionalProperties": false, "properties": { "description": { "title": "Description", "description": "", "type": "object", "properties": { "identifier": { "title": "Identifier", "description": "The name of this feature in the form `namespace_name:feature_name`. `feature_name` must match the filename.", "type": "string", "$ref": "#/definitions/C" } } } } }, "A": { "type": "object", "title": "Features 1.13.0", "description": "Features are decorations scattered throughout the world. Things such as trees, plants, flowers, springs, ore, and coral are all features. Basically, if it isn't the terrain or a mob, it's probably a feature!", "additionalProperties": false, "required": ["format_version"], "minProperties": 2, "maxProperties": 2, "properties": { "format_version": { "const": "1.13.0", "description": "Specifies the version of the game this entity was made in. Minimum supported version is 1.13.0. Current supported version is 1.13.0.", "title": "Format Version" }, "minecraft:aggregate_feature": { "$ref": "#/definitions/B" }, "minecraft:cave_carver_feature": { "$ref": "#/definitions/D" }, "minecraft:conditional_list": { "$ref": "#/definitions/G" }, "minecraft:geode_feature": { "$ref": "#/definitions/I" }, "minecraft:growing_plant_feature": { "$ref": "#/definitions/J" }, "minecraft:hell_cave_carver_feature": { "$ref": "#/definitions/BA" }, "minecraft:multiface_feature": { "$ref": "#/definitions/BB" }, "minecraft:ore_feature": { "$ref": "#/definitions/BC" }, "minecraft:rect_layout": { "$ref": "#/definitions/BD" }, "minecraft:scan_surface": { "$ref": "#/definitions/BE" }, "minecraft:scatter_feature": { "$ref": "#/definitions/BF" }, "minecraft:search_feature": { "$ref": "#/definitions/BG" }, "minecraft:sequence_feature": { "$ref": "#/definitions/BH" }, "minecraft:single_block_feature": { "$ref": "#/definitions/BI" }, "minecraft:snap_to_surface_feature": { "$ref": "#/definitions/BJ" }, "minecraft:structure_template_feature": { "$ref": "#/definitions/CA" }, "minecraft:tree_feature": { "$ref": "#/definitions/CB" }, "minecraft:underwater_cave_carver_feature": { "$ref": "#/definitions/CC" }, "minecraft:vegetation_patch_feature": { "$ref": "#/definitions/CD" }, "minecraft:weighted_random_feature": { "$ref": "#/definitions/CE" } } }, "CF": { "title": "Format Version", "description": "A version that tells minecraft what type of data format can be expected when reading this file.", "pattern": "^(1)\\.([0-9]+)\\.([0-9]+)$", "type": "string" } } }