Files
minecraft-bedrock-json-schemas/behavior/features/features.json
2021-06-08 15:07:49 +00:00

1 line
26 KiB
JSON
Vendored

{"$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","title":"Geode Feature","description":"`minecraft:geode_feature` generates a rock formation to simulate a geode. Each layer of, and block within, the geode can be replaced.\nSucceeds if: At least one block within the geode is placed.\nFails if: All blocks within the geode fail to be placed.","required":["description","max_radius","filler","inner_layer","alternate_inner_layer","use_alternate_layer0_chance","middle_layer","outer_layer","placements_require_layer0_alternate","use_potential_placements_chance","min_distribution_points","max_distribution_points","min_outer_wall_distance","max_outer_wall_distance","min_point_offset","max_point_offset","noise_multiplier","invalid_blocks_threshold","crack_point_offset","generate_crack_chance","base_crack_size"],"additionalProperties":false,"examples":[{"description":{"identifier":"geode_features:geode_feature"},"max_radius":80,"filler":"minecraft:air","inner_layer":"minecraft:stone","alternate_inner_layer":"minecraft:cobblestone","use_alternate_layer0_chance":0.5,"middle_layer":"minecraft:planks","outer_layer":"minecraft:obsidian","inner_placements":["mincraft:glass"],"placements_require_layer0_alternate":true,"use_potential_placements_chance":0.125,"min_distribution_points":3,"max_distribution_points":3,"min_outer_wall_distance":3,"max_outer_wall_distance":3,"min_point_offset":0,"max_point_offset":0,"noise_multiplier":0.025,"invalid_blocks_threshold":10000,"crack_point_offset":0,"generate_crack_chance":0,"base_crack_size":0}],"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"}}},"filler":{"title":"Filler","type":"string","description":"The block to fill the inside of the geode.","$ref":"#/definitions/E"},"inner_layer":{"title":"Inner layer","type":"string","description":"The block that forms the inside layer of the geode shell.","$ref":"#/definitions/E"},"alternate_inner_layer":{"title":"Alternate inner layer","type":"string","description":"The block that has a chance of generating instead of inner_layer.","$ref":"#/definitions/E"},"middle_layer":{"title":"Middle layer","type":"string","description":"The block that forms the middle layer of the geode shell.","$ref":"#/definitions/E"},"outer_layer":{"title":"Outer layer","type":"string","description":"The block that forms the outer shell of the geode.","$ref":"#/definitions/E"},"inner_placements":{"title":"Inner placements","description":"A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.","type":"array","minItems":1,"items":{"title":"Block reference","description":"A block that may be replaced during placement","$ref":"#/definitions/E"}},"min_outer_wall_distance":{"title":"Min Outer Wall Distance","type":"integer","description":"The minimum distance each distribution point must be from the outer wall. [0,10]","minimum":1,"maximum":10},"max_outer_wall_distance":{"title":"Max Outer Wall Distance","type":"integer","description":"The maximum distance each distribution point can be from the outer wall. [0,20]","minimum":1,"maximum":20},"min_distribution_points":{"title":"Min Distribution Points","type":"integer","description":"The minimum number of points inside the distance field that can get generated. The distance field is the area consisting of all points with a minimum distance to all destribution points. [0,10]","minimum":1,"maximum":10},"max_distribution_points":{"title":"Max Distribution Points","type":"integer","description":"The maximum number of points inside the distance field that can get generated. The distance field is the area consisting of all points with a minimum distance to all destribution points. [0,20]","minimum":1,"maximum":20},"min_point_offset":{"title":"Min Point Offset","type":"integer","description":"The lowest possible value of random offset applied to the position of each distribution point. [0,10]","minimum":0,"maximum":10},"max_point_offset":{"title":"Max Point Offset","type":"integer","description":"The highest possible value of random offset applied to the position of each distribution point. [0,10]","minimum":1,"maximum":10},"max_radius":{"title":"Max Radius","type":"integer","description":"The maximum possible radius of the geode generated."},"crack_point_offset":{"title":"Crack Point Offset","type":"integer","description":"An offset applied to each distribution point that forms the geode crack opening. [0,10]","minimum":0,"maximum":10},"generate_crack_chance":{"title":"Generate Crack Chance","type":"number","description":"The likelihood of a geode generating with a crack in its shell. [0,1]","minimum":0.0,"maximum":1.0},"base_crack_size":{"title":"Base Crack Size","type":"number","description":"How large the crack opening of the geode should be when generated. [0,5]","minimum":0.0,"maximum":5.0},"noise_multiplier":{"title":"Noise Multiplier","type":"number","description":"A multiplier applied to the noise that is applied to the distribution points within the geode. Higher = more noisy."},"use_potential_placements_chance":{"title":"Use Potential Placements Chance","type":"number","description":"The likelihood that a special block will be placed on the inside of the geode. [0,1]","minimum":0.0,"maximum":1.0},"use_alternate_layer0_chance":{"title":"Use Alternate Layer0 Chance","type":"number","description":"The likelihood that a block in the innermost layer of the geode will be replaced with an alternate option. [0,1]","minimum":0.0,"maximum":1.0},"placements_require_layer0_alternate":{"title":"Placements Require Layer0 Alternate","type":"boolean","description":" If true, the potential placement block will only be placed on the alternate layer0 blocks that get placed. Potential placement blocks are blocks that depend on the existance of another block to be placed. The latter are the layer0 alternate blocks."},"invalid_blocks_threshold":{"title":"Invalid Blocks Threshold","type":"integer","description":"The threshold of invalid blocks for a geode to have a distribution point in before it aborts generation entirely."}}},"J_range":{"title":"Range","description":"A range","type":"object","required":["range_min","range_max"],"examples":[{"range_min":8,"range_max":9}],"properties":{"range_max":{"title":"Range Max","type":"integer","description":"The maximum plant height"},"range_min":{"title":"Range Min","type":"integer","description":"The minimum plant height"}}},"J_rangeOrInt":{"oneOf":[{"type":"integer","minimum":0},{"type":"object","$ref":"#/definitions/J_range"}]},"J_blocks_array":{"type":"array","minItems":1,"items":{"title":"Blocks","description":"Collection of weighted block descriptor that placement will select from for the plant.","type":"array","minItems":2,"maxItems":2,"items":[{"title":"Plant Body Block","description":"Plant body block.","type":"string","$ref":"#/definitions/E"},{"type":"number","title":"Weight","description":"Weight used in random selection. Value is relative to other weights in the collection.","minimum":0}]}},"J":{"type":"object","title":"Growing Plant Feature","description":"'minecraft:growing_plant_feature' places a growing plant in the world. A growing plant is a column that is anchored either to the ceiling or the floor, based on its growth direction.\nThe growing plant has a body and a head, where the head is the tip of the plant, and the body consists of the remainder blocks.\nThis feature can be used to define growing plants with variable body and head blocks, e.g. Cave Vines.","additionalProperties":false,"required":["description","height_distribution","growth_direction","body_blocks","head_blocks"],"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"}}},"age":{"title":"Age","description":"Age of the head of the plant.","$ref":"#/definitions/J_rangeOrInt"},"height_distribution":{"title":"Height distribution","description":"Collection of weighted heights that placement will select from.","type":"array","minItems":1,"examples":[[[{"range_min":8,"range_max":9},1],[6,1]]],"items":{"title":"Height distribution","description":"Collection of weighted heights that placement will select from.","type":"array","minItems":2,"maxItems":2,"items":[{"title":"Plant Height","description":"Plant height.","$ref":"#/definitions/J_rangeOrInt"},{"type":"number","title":"Weight","description":"Weight used in random selection. Value is relative to other weights in the collection.","minimum":0}]}},"growth_direction":{"title":"Growth Direction","description":"Direction that the plant grows towards. Valid values: UP and DOWN","type":"string","enum":["UP","DOWN","up","down"]},"body_blocks":{"title":"Body Blocks","description":"Collection of weighted block descriptor that placement will select from for the body of the plant.","$ref":"#/definitions/J_blocks_array"},"head_blocks":{"title":"Head Blocks","description":"Collection of weighted block descriptor that placement will select from for the body of the plant.","$ref":"#/definitions/J_blocks_array"},"allow_water":{"title":"Allow Water","description":"Plant blocks can be placed in water.","type":"boolean"}}},"BA":{"title":"Hell Cave Carver Feature","description":"`minecraft:hell_cave_carver_feature` carves a cave through the Nether 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`.","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"}}},"fill_with":{"title":"Identifier","description":"Reference to the block to fill the cave with.","type":"string","$ref":"#/definitions/E"},"width_modifier":{"title":"Identifier","description":"How many blocks to increase the cave radius by, from the center point of the cave.","type":"string","$ref":"#/definitions/F"}}},"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"}}}