Update features (#235)

* - Update features

* - Fix
This commit is contained in:
Xterionix
2024-03-21 15:01:23 +05:00
committed by GitHub
parent af620585f0
commit e65c85ddfa
41 changed files with 2892 additions and 3030 deletions

View File

@@ -1,40 +0,0 @@
{
"$id": "blockception.minecraft.behavior.features.1.13.0",
"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": "./features/minecraft.aggregate_feature.json" },
"minecraft:beards_and_shavers": { "$ref": "./features/minecraft.beards_and_shavers.json" },
"minecraft:cave_carver_feature": { "$ref": "./features/minecraft.cave_carver_feature.json" },
"minecraft:conditional_list": { "$ref": "./features/minecraft.conditional_list.json" },
"minecraft:geode_feature": { "$ref": "./features/minecraft.geode_feature.json" },
"minecraft:growing_plant_feature": { "$ref": "./features/minecraft.growing_plant_feature.json" },
"minecraft:hell_cave_carver_feature": { "$ref": "./features/minecraft.hell_cave_carver_feature.json" },
"minecraft:multiface_feature": { "$ref": "./features/minecraft.multiface_feature.json" },
"minecraft:ore_feature": { "$ref": "./features/minecraft.ore_feature.json" },
"minecraft:rect_layout": { "$ref": "./features/minecraft.rect_layout.json" },
"minecraft:scan_surface": { "$ref": "./features/minecraft.scan_surface.json" },
"minecraft:scatter_feature": { "$ref": "./features/minecraft.scatter_feature.json" },
"minecraft:search_feature": { "$ref": "./features/minecraft.search_feature.json" },
"minecraft:sequence_feature": { "$ref": "./features/minecraft.sequence_feature.json" },
"minecraft:single_block_feature": { "$ref": "./features/minecraft.single_block_feature.json" },
"minecraft:snap_to_surface_feature": { "$ref": "./features/minecraft.snap_to_surface_feature.json" },
"minecraft:structure_template_feature": { "$ref": "./features/minecraft.structure_template_feature.json" },
"minecraft:tree_feature": { "$ref": "./features/minecraft.tree_feature.json" },
"minecraft:underwater_cave_carver_feature": {
"$ref": "./features/minecraft.underwater_cave_carver_feature.json"
},
"minecraft:vegetation_patch_feature": { "$ref": "./features/minecraft.vegetation_patch_feature.json" },
"minecraft:weighted_random_feature": { "$ref": "./features/minecraft.weighted_random_feature.json" }
}
}

View File

@@ -1,42 +0,0 @@
{
"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,
"required": ["description", "features"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"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": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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"]
}
}
}

View File

@@ -1,77 +0,0 @@
{
"title": "Beards And Shavers",
"description": "`minecraft:beards_and_shavers` will build a `beard` or `shave` out space so as to provide a clear space for a feature to place.\nSucceeds if: a beard/shave is made (this should always happen).\nFails if: will always return placement pos, but interior feature placement not guaranteed.",
"type": "object",
"additionalProperties": false,
"required": ["description", "places_feature", "bounding_box_max", "bounding_box_min", "y_delta", "surface_block_type", "subsurface_block_type"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"places_feature": {
"title": "Places Feature",
"description": "Named reference of feature to be placed.",
"type": "string",
"$ref": "../../../../general/feature/identifier.json"
},
"bounding_box_min": {
"title": "Bounding Box Min",
"description": "Dimensions of the Bounding Box.",
"type": "array",
"items": [
{ "type": "number", "title": "X" },
{ "type": "number", "title": "Y" },
{ "type": "number", "title": "Z" }
]
},
"bounding_box_max": {
"title": "Bounding Box Max",
"description": "Dimensions of the Bounding Box.",
"type": "array",
"items": [
{ "type": "number", "title": "X" },
{ "type": "number", "title": "Y" },
{ "type": "number", "title": "Z" }
]
},
"y_delta": {
"title": "Y Delta",
"description": "Y Delta for BAS.",
"type": "number"
},
"surface_block_type": {
"title": "Surface Block Type",
"description": "Reference to the block to be placed.",
"type": "string",
"$ref": "../../../../general/block/identifier.json"
},
"subsurface_block_type": {
"title": "Subsurface Block Type",
"description": "Reference to the block to be placed.",
"type": "string",
"$ref": "../../../../general/block/identifier.json"
},
"beard_raggedness_min": {
"title": "Beard Raggedness Min",
"description": "Y Delta for BAS.",
"type": "number"
},
"beard_raggedness_max": {
"title": "Beard Raggedness Max",
"description": "Y Delta for BAS.",
"type": "number"
}
}
}

View File

@@ -1,34 +0,0 @@
{
"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,
"required": ["description"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"fill_with": {
"title": "Fill with",
"description": "Reference to the block to fill the cave with.",
"$ref": "../../../../general/block/identifier.json"
},
"width_modifier": {
"title": "Width modifier",
"description": "How many blocks to increase the cave radius by, from the center point of the cave.",
"$ref": "../../../../molang/number.json"
}
}
}

View File

@@ -1,54 +0,0 @@
{
"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": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"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": "../../../../general/feature/identifier.json"
},
"condition": {
"title": "Condition",
"description": "Condition for placing associated Feature.",
"$ref": "../../../../molang/string.json"
}
}
}
},
"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"]
}
}
}

View File

@@ -1,35 +0,0 @@
{
"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,
"required": ["description"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"fill_with": {
"title": "Identifier",
"description": "Reference to the block to fill the cave with.",
"type": "string",
"$ref": "../../../../general/block/identifier.json"
},
"width_modifier": {
"title": "Identifier",
"description": "How many blocks to increase the cave radius by, from the center point of the cave.",
"$ref": "../../../../molang/number.json"
}
}
}

View File

@@ -1,62 +0,0 @@
{
"type": "object",
"title": "Rect Layout",
"description": "`minecraft:rect_layout` places a vein of blocks to simulate ore deposits. Despite the name, any block can be placed by this feature. During placement, existing world blocks are checked to see if they can be replaced by the new ore block based on the list provided in the `may_replace` field of a `replace_rules` entry. If no `may_replace` field is specified in a `replace_rule` entry, the ore block can replace any existing block.\nSucceeds if: At least one ore block is successfully placed.\nFails if: All ore block placements fail.",
"additionalProperties": false,
"required": ["description", "feature_areas"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"ratio_of_empty_space": {
"title": "Ratio Of Empty Space",
"description": "Ratio of a Chunk to be filled with empty space rather than features.",
"type": "number"
},
"feature_areas": {
"title": "Feature Areas",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"minItems": 1,
"maxItems": 4294967295,
"items": {
"type": "object",
"title": "Feature Area",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"additionalProperties": false,
"properties": {
"feature": {
"title": "Feature",
"description": "Feature to be placed.",
"type": "string",
"$ref": "../../../../general/feature/identifier.json"
},
"area_dimensions": {
"title": "Area Dimensions",
"description": "Dimensions (size) of the associated Feature.",
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [
{ "title": "Width", "type": "integer", "minimum": 0 },
{ "title": "Length", "type": "integer", "minimum": 0 }
]
}
}
}
}
}
}

View File

@@ -1,30 +0,0 @@
{
"type": "object",
"title": "Rect Layout",
"description": "`minecraft:scan_surface` scans the surface of a Chunk, calling place() on the surface of each block column.\nSucceeds if: A Feature was successfully placed during the scan.\nFails if: No Feature was placed during the course of the scan.",
"additionalProperties": false,
"required": ["description", "scan_surface_feature"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"scan_surface_feature": {
"title": "Scan Surface Feature",
"description": "Named reference of feature to be placed.",
"type": "string",
"$ref": "../../../../general/feature/identifier.json"
}
}
}

View File

@@ -1,41 +0,0 @@
{
"title": "Underwater Cave Carver Feature",
"description": "'minecraft:underwater_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 specifically target creating caves only below sea level.\nThis feature will also only work when placed specifically in the pass `pregeneration_pass`.",
"type": "object",
"additionalProperties": false,
"required": ["description"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"fill_with": {
"title": "Fill with",
"description": "Reference to the block to fill the cave with.",
"type": "string",
"$ref": "../../../../general/block/identifier.json"
},
"width_modifier": {
"title": "Width Modifier",
"description": "How many blocks to increase the cave radius by, from the center point of the cave.",
"$ref": "../../../../molang/number.json"
},
"replace_air_with": {
"title": "Replace air with",
"description": "Reference to the block to replace air blocks with.",
"type": "string",
"$ref": "../../../../general/block/identifier.json"
}
}
}

View File

@@ -1,103 +0,0 @@
{
"title": "Vegetation Patch Feature",
"description": "Feature type `minecraft:vegetation_patch_feature` has not yet been documented.",
"type": "object",
"additionalProperties": false,
"required": ["description"],
"properties": {
"description": {
"title": "Description",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
},
"replaceable_blocks": {
"title": "Replaceable Blocks",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "array",
"items": {
"title": "Replace block",
"type": "string",
"$ref": "../../../../general/block/identifier.json"
}
},
"ground_block": {
"title": "Ground Block",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "string",
"$ref": "../../../../general/block/identifier.json"
},
"vegetation_feature": {
"title": "Vegetation Feature",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "string",
"$ref": "../../../../general/feature/identifier.json"
},
"surface": {
"title": "Surface",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "string"
},
"depth": {
"title": "Depth",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "integer",
"minimum": 0
},
"extra_deep_block_chance": {
"title": "Extra Deep Block Chance",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "number",
"minimum": 0
},
"vertical_range": {
"title": "Vertical Range",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "integer",
"minimum": 0
},
"vegetation_chance": {
"title": "Vegatation Chance",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "number",
"minimum": 0
},
"horizontal_radius": {
"title": "Horizontal Radius",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "integer",
"minimum": 0
},
"extra_edge_column_chance": {
"title": "Extra Egde Column Chance",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "number",
"minimum": 0
},
"waterlogged": {
"title": "Waterlogged",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"type": "boolean"
}
}
}

View File

@@ -1,3 +0,0 @@
# Cave carvers
`"width_modifier"` may also be a float/int. This will be true for the other 2 cave carvers, too.

View File

@@ -1,17 +1,33 @@
{ {
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "blockception.minecraft.behavior.features", "$id": "blockception.minecraft.behavior.features",
"examples": [ "type": "object",
{ "title": "Features",
"format_version": "1.20.41", "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!",
"minecraft:ore_feature": { "additionalProperties": false,
"description": { "identifier": "example:foo" }, "required": ["format_version"],
"features": {} "minProperties": 2,
} "maxProperties": 2,
} "properties": {
], "format_version": { "$ref": "../../general/format_version.json" },
"allOf": [ "minecraft:aggregate_feature": { "$ref": "./features/minecraft.aggregate_feature.json" },
{ "if": { "properties": { "format_version": { "type": "string", "const": "1.13.0" } } }, "then": { "$ref": "./1.13.0/features.json" } }, "minecraft:cave_carver_feature": { "$ref": "./features/minecraft.cave_carver_feature.json" },
{ "properties": { "format_version": { "$ref": "../../general/format_version.json" } } } "minecraft:fossil_feature": { "$ref": "./features/minecraft.fossil_feature.json" },
] "minecraft:geode_feature": { "$ref": "./features/minecraft.geode_feature.json" },
"minecraft:growing_plant_feature": { "$ref": "./features/minecraft.growing_plant_feature.json" },
"minecraft:multiface_feature": { "$ref": "./features/minecraft.multiface_feature.json" },
"minecraft:nether_cave_carver_feature": { "$ref": "./features/minecraft.nether_cave_carver_feature.json" },
"minecraft:ore_feature": { "$ref": "./features/minecraft.ore_feature.json" },
"minecraft:partially_exposed_blob_feature": { "$ref": "./features/minecraft.partially_exposed_blob_feature.json" },
"minecraft:scatter_feature": { "$ref": "./features/minecraft.scatter_feature.json" },
"minecraft:search_feature": { "$ref": "./features/minecraft.search_feature.json" },
"minecraft:sequence_feature": { "$ref": "./features/minecraft.sequence_feature.json" },
"minecraft:single_block_feature": { "$ref": "./features/minecraft.single_block_feature.json" },
"minecraft:snap_to_surface_feature": { "$ref": "./features/minecraft.snap_to_surface_feature.json" },
"minecraft:structure_template_feature": { "$ref": "./features/minecraft.structure_template_feature.json" },
"minecraft:surface_relative_threshold_feature": { "$ref": "./features/minecraft.surface_relative_threshold_feature.json" },
"minecraft:tree_feature": { "$ref": "./features/minecraft.tree_feature.json" },
"minecraft:underwater_cave_carver_feature": { "$ref": "./features/minecraft.underwater_cave_carver_feature.json" },
"minecraft:vegetation_patch_feature": { "$ref": "./features/minecraft.vegetation_patch_feature.json" },
"minecraft:weighted_random_feature": { "$ref": "./features/minecraft.weighted_random_feature.json" }
}
} }

View File

@@ -0,0 +1,36 @@
{
"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,
"required": [
"description",
"features"
],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"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": "Feature identifer",
"type": "string"
}
},
"early_out": {
"type": "string",
"title": "Early Out",
"description": "Do not continue placing features once either the first success or first failure has occurred.",
"enum": [
"none",
"first_failure",
"first_success"
]
}
}
}

View File

@@ -0,0 +1,74 @@
{
"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,
"required": ["description"],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"fill_with": {
"title": "Fill With",
"description": "Reference to the block to fill the cave with.",
"$ref": "../../../general/block/identifier.json"
},
"width_modifier": {
"title": "Width Modifier",
"description": "How many blocks to increase the cave radius by, from the center point of the cave.",
"$ref": "../../../molang/number.json"
},
"skip_carve_chance": {
"title": "Skip Carve Chance",
"description": "The chance to skip doing the carve (1 / value).",
"type": "integer",
"minimum": 1
},
"height_limit": {
"title": "Height Limit",
"description": "The height limit where we attempt to carve",
"type": "integer"
},
"y_scale": {
"type": "array",
"title": "Y Scale",
"description": "The scaling in y",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"horizontal_radius_multiplier": {
"type": "array",
"title": "Horizontal Radius Multiplier",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"vertical_radius_multiplier": {
"type": "array",
"title": "Vertical Radius Multiplier",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"floor_level": {
"type": "array",
"title": "Floor Level",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
}
}
}

View File

@@ -0,0 +1,22 @@
{
"type": "object",
"title": "Fossil Feature",
"description": "'minecraft:fossil_feature' generates a skeletal structure composed of bone blocks and parametric ore blocks.",
"additionalProperties": false,
"required": ["description"],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"ore_block": {
"title": "Ore Block",
"description": "Reference to the block to fill the cave with.",
"$ref": "../../../general/block/identifier.json"
},
"max_empty_corners": {
"title": "Max Empty Corners",
"description": "UNDOCUMENTED",
"type": "integer"
}
}
}

View File

@@ -64,59 +64,47 @@
], ],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"filler": { "filler": {
"title": "Filler", "title": "Filler",
"type": "string", "type": "string",
"description": "The block to fill the inside of the geode.", "description": "The block to fill the inside of the geode.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"inner_layer": { "inner_layer": {
"title": "Inner layer", "title": "Inner Layer",
"type": "string", "type": "string",
"description": "The block that forms the inside layer of the geode shell.", "description": "The block that forms the inside layer of the geode shell.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"alternate_inner_layer": { "alternate_inner_layer": {
"title": "Alternate inner layer", "title": "Alternate Inner Layer",
"type": "string", "type": "string",
"description": "The block that has a chance of generating instead of inner_layer.", "description": "The block that has a chance of generating instead of inner_layer.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"middle_layer": { "middle_layer": {
"title": "Middle layer", "title": "Middle Layer",
"type": "string", "type": "string",
"description": "The block that forms the middle layer of the geode shell.", "description": "The block that forms the middle layer of the geode shell.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"outer_layer": { "outer_layer": {
"title": "Outer layer", "title": "Outer Layer",
"type": "string", "type": "string",
"description": "The block that forms the outer shell of the geode.", "description": "The block that forms the outer shell of the geode.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"inner_placements": { "inner_placements": {
"title": "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.", "description": "A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.",
"type": "array", "type": "array",
"minItems": 1, "minItems": 1,
"items": { "items": {
"title": "Block reference", "title": "Block Reference",
"description": "A block that may be replaced during placement.", "description": "A block that may be replaced during placement.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
} }
}, },
"min_outer_wall_distance": { "min_outer_wall_distance": {

View File

@@ -44,13 +44,11 @@
"title": "Plant Body Block", "title": "Plant Body Block",
"description": "Plant body block.", "description": "Plant body block.",
"type": "string", "type": "string",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
{ {
"type": "number", "title": "Age",
"title": "Weight", "$ref": "../../entities/format/types/range_number_type.json"
"description": "Weight used in random selection. Value is relative to other weights in the collection.",
"minimum": 0
} }
] ]
} }
@@ -58,19 +56,7 @@
}, },
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"age": { "age": {
"title": "Age", "title": "Age",
@@ -78,7 +64,7 @@
"$ref": "#/definitions/rangeOrInt" "$ref": "#/definitions/rangeOrInt"
}, },
"height_distribution": { "height_distribution": {
"title": "Height distribution", "title": "Height Distribution",
"description": "Collection of weighted heights that placement will select from.", "description": "Collection of weighted heights that placement will select from.",
"type": "array", "type": "array",
"minItems": 1, "minItems": 1,
@@ -89,7 +75,7 @@
] ]
], ],
"items": { "items": {
"title": "Height distribution", "title": "Items",
"description": "Collection of weighted heights that placement will select from.", "description": "Collection of weighted heights that placement will select from.",
"type": "array", "type": "array",
"minItems": 2, "minItems": 2,

View File

@@ -6,25 +6,13 @@
"required": ["description", "places_block", "search_range", "can_place_on_floor", "can_place_on_ceiling", "can_place_on_wall", "chance_of_spreading"], "required": ["description", "places_block", "search_range", "can_place_on_floor", "can_place_on_ceiling", "can_place_on_wall", "chance_of_spreading"],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"places_block": { "places_block": {
"title": "Places Block", "title": "Places Block",
"description": "Reference to the block to be placed.", "description": "Reference to the block to be placed.",
"type": "string", "type": "string",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"search_range": { "search_range": {
"title": "Search Range", "title": "Search Range",
@@ -49,7 +37,7 @@
"type": "boolean" "type": "boolean"
}, },
"chance_of_spreading": { "chance_of_spreading": {
"title": "Chance of Spreading", "title": "Chance Of Spreading",
"description": "For each block placed by this feature, how likely will that block spread to another?.", "description": "For each block placed by this feature, how likely will that block spread to another?.",
"type": "number", "type": "number",
"minimum": 0.0, "minimum": 0.0,
@@ -63,7 +51,7 @@
"items": { "items": {
"title": "Block", "title": "Block",
"description": " A list of blocks that the block in this feature can be placed on. Omit this field to allow any block to be placed on.", "description": " A list of blocks that the block in this feature can be placed on. Omit this field to allow any block to be placed on.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
} }
} }
} }

View File

@@ -0,0 +1,75 @@
{
"title": "Nether Cave Carver Feature",
"description": "`minecraft:nether_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,
"required": ["description"],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"fill_with": {
"title": "Identifier",
"description": "Reference to the block to fill the cave with.",
"type": "string",
"$ref": "../../../general/block/identifier.json"
},
"width_modifier": {
"title": "Identifier",
"description": "How many blocks to increase the cave radius by, from the center point of the cave.",
"$ref": "../../../molang/number.json"
},
"skip_carve_chance": {
"title": "Skip Carve Chance",
"description": "The chance to skip doing the carve (1 / value).",
"type": "integer",
"minimum": 1
},
"height_limit": {
"title": "Height Limit",
"description": "The height limit where we attempt to carve",
"type": "integer"
},
"y_scale": {
"type": "array",
"title": "Y Scale",
"description": "The scaling in y",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"horizontal_radius_multiplier": {
"type": "array",
"title": "Horizontal Radius Multiplier",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"vertical_radius_multiplier": {
"type": "array",
"title": "Vertical Radius Multiplier",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"floor_level": {
"type": "array",
"title": "Floor Level",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
}
}
}

View File

@@ -6,19 +6,7 @@
"required": ["count", "description"], "required": ["count", "description"],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"count": { "count": {
"title": "Count", "title": "Count",
@@ -40,19 +28,26 @@
"places_block": { "places_block": {
"title": "Places Block", "title": "Places Block",
"description": "Reference to the block to be placed.", "description": "Reference to the block to be placed.",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"may_replace": { "may_replace": {
"title": "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.", "description": "A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.",
"type": "array", "type": "array",
"minItems": 1, "minItems": 1,
"items": { "items": {
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
} }
} }
} }
} }
},
"discard_chance_on_air_exposure": {
"title": "Discard Chance On Air Exposure",
"description": "Chance of discarding placement if neighboring block is Air.",
"type": "number",
"minimum": 0,
"maximum": 1
} }
} }
} }

View File

@@ -0,0 +1,45 @@
{
"type": "object",
"title": "Partially Exposed Blob Feature",
"description": "'minecraft:partially_exposed_blob_feature' generates a blob of the specified block with the specified dimensions For the most part the blob is embedded in the specified surface, however a single side is allowed to be exposed.",
"additionalProperties": false,
"required": ["places_block", "description", "placement_radius_around_floor", "placement_probability_per_valid_position"],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"places_block": {
"title": "Places Block",
"description": "Reference to the block to be placed.",
"$ref": "../../../general/block/identifier.json"
},
"placement_radius_around_floor": {
"title": "Placement Radius Around Floor",
"description": "Defines the cubic radius of the blob.",
"type": "number",
"minimum": 1,
"maximum": 8
},
"placement_probability_per_valid_position": {
"title": "Placement Probability Per Valid Position",
"description": "The probability of trying to place a block at each position within the placement bounds.",
"type": "number",
"minimum": 0,
"maximum": 1
},
"exposed_face": {
"title": "Exposed Face",
"description": "Defines a block face that is allowed to be exposed to air and/or water. Other faces need to be embedded for blocks to be placed by this feature. Defaults to upwards face",
"default": "up",
"enum": [
"up",
"down",
"side",
"north",
"east",
"west",
"south"
]
}
}
}

View File

@@ -3,13 +3,13 @@
"title": "Scatter Feature", "title": "Scatter Feature",
"description": "`minecraft:scatter_feature` scatters a feature throughout a chunk. The `x`, `y`, and `z` fields are per-coordinate parameters.\nNote that coordinates represent an offset from the input position, not an absolute position. Coordinates may be a single value, a random distribution, or molang expression that resolves to a numeric value. The `coordinate_eval_order` field is provided for finer control of coordinate resolution (particularly when using the `grid` distribution). `iterations` controls how many individual placements should occur if the `scatter_chance` check succeeds. The `scatter_chance` check happens once, so either all placements will run or none will.\nSucceeds if: At least one feature placement succeeds.\nFails if: All feature placements fail.", "description": "`minecraft:scatter_feature` scatters a feature throughout a chunk. The `x`, `y`, and `z` fields are per-coordinate parameters.\nNote that coordinates represent an offset from the input position, not an absolute position. Coordinates may be a single value, a random distribution, or molang expression that resolves to a numeric value. The `coordinate_eval_order` field is provided for finer control of coordinate resolution (particularly when using the `grid` distribution). `iterations` controls how many individual placements should occur if the `scatter_chance` check succeeds. The `scatter_chance` check happens once, so either all placements will run or none will.\nSucceeds if: At least one feature placement succeeds.\nFails if: All feature placements fail.",
"additionalProperties": false, "additionalProperties": false,
"required": ["description", "places_feature"], "required": ["description", "places_feature", "iterations"],
"definitions": { "definitions": {
"coordinate": { "coordinate": {
"title": "Coordinate", "title": "Coordinate",
"oneOf": [ "oneOf": [
{ {
"$ref": "../../../../molang/number.json", "$ref": "../../../molang/number.json",
"description": "Expression for the coordinate (evaluated each iteration). Mutually exclusive with random distribution object below." "description": "Expression for the coordinate (evaluated each iteration). Mutually exclusive with random distribution object below."
}, },
{ {
@@ -20,9 +20,9 @@
"properties": { "properties": {
"distribution": { "distribution": {
"title": "Distribution", "title": "Distribution",
"description": "Type of distribution - uniform random, gaussian (centered in the range), or grid (either fixed-step or jittered).", "description": "Type of distribution - uniform random, gaussian (centered in the range), triangle (centered in the range), or grid (either fixed-step or jittered).",
"type": "string", "type": "string",
"enum": ["uniform", "gaussian", "inverse_gaussian", "fixed_grid", "jittered_grid"] "enum": ["uniform", "gaussian", "inverse_gaussian", "triangle", "fixed_grid", "jittered_grid"]
}, },
"step_size": { "step_size": {
"title": "Step Size", "title": "Step Size",
@@ -38,18 +38,17 @@
}, },
"extent": { "extent": {
"title": "Extent", "title": "Extent",
"description": "UNDOCUMENTED.", "description": "The lower and upper bound as an offset from the input position",
"$comment": "UNDOCUMENTED",
"type": "array", "type": "array",
"items": [ "items": [
{ {
"title": "Lower Bound", "title": "Lower Bound",
"$ref": "../../../../molang/number.json", "$ref": "../../../molang/number.json",
"description": "Lower bound (inclusive) of the scatter range, as an offset from the input point to scatter around." "description": "Lower bound (inclusive) of the scatter range, as an offset from the input point to scatter around."
}, },
{ {
"title": "Upper Bound", "title": "Upper Bound",
"$ref": "../../../../molang/number.json", "$ref": "../../../molang/number.json",
"description": "Upper bound (inclusive) of the scatter range, as an offset from the input point to scatter around." "description": "Upper bound (inclusive) of the scatter range, as an offset from the input point to scatter around."
} }
] ]
@@ -61,25 +60,13 @@
}, },
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"places_feature": { "places_feature": {
"title": "Places Feature", "title": "Places Feature",
"description": "Named reference of feature to be placed.", "description": "Named reference of feature to be placed.",
"type": "string", "type": "string",
"$ref": "../../../../general/feature/identifier.json" "$ref": "../../../general/feature/identifier.json"
}, },
"project_input_to_floor": { "project_input_to_floor": {
"title": "Project Input To Floor", "title": "Project Input To Floor",
@@ -89,7 +76,7 @@
"iterations": { "iterations": {
"title": "Iterations", "title": "Iterations",
"description": "Number of scattered positions to generate.", "description": "Number of scattered positions to generate.",
"$ref": "../../../../molang/number.json" "$ref": "../../../molang/number.json"
}, },
"scatter_chance": { "scatter_chance": {
"title": "Scatter Chance", "title": "Scatter Chance",
@@ -114,13 +101,13 @@
} }
}, },
{ {
"$ref": "../../../../molang/number.json", "$ref": "../../../molang/number.json",
"description": "Probability (0-100] that this scatter will occur. Not evaluated each iteration; either no iterations will run, or all will." "description": "Probability (0-100] that this scatter will occur. Not evaluated each iteration; either no iterations will run, or all will."
} }
] ]
}, },
"coordinate_eval_order": { "coordinate_eval_order": {
"title": "coordinate_eval_order", "title": "Coordinate Eval Order",
"description": "The order in which coordinates will be evaluated. Should be used when a coordinate depends on another. If omitted, defaults to `xzy`.", "description": "The order in which coordinates will be evaluated. Should be used when a coordinate depends on another. If omitted, defaults to `xzy`.",
"type": "string", "type": "string",
"enum": ["xyz", "xzy", "yxz", "yzx", "zxy", "zyx"] "enum": ["xyz", "xzy", "yxz", "yzx", "zxy", "zyx"]

View File

@@ -6,25 +6,13 @@
"required": ["description", "search_axis"], "required": ["description", "search_axis"],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"places_feature": { "places_feature": {
"title": "Places Feature", "title": "Places Feature",
"description": "Named reference of feature to be placed.", "description": "Named reference of feature to be placed.",
"type": "string", "type": "string",
"$ref": "../../../../general/feature/identifier.json" "$ref": "../../../general/feature/identifier.json"
}, },
"search_volume": { "search_volume": {
"title": "Places Feature", "title": "Places Feature",
@@ -62,7 +50,7 @@
"enum": ["-x", "+x", "-y", "+y", "-z", "+z"] "enum": ["-x", "+x", "-y", "+y", "-z", "+z"]
}, },
"required_successes": { "required_successes": {
"title": "Required successes", "title": "Required Successes",
"description": "Number of valid positions the search must find in order to place the referenced feature.", "description": "Number of valid positions the search must find in order to place the referenced feature.",
"type": "integer", "type": "integer",
"minimum": 1 "minimum": 1

View File

@@ -6,19 +6,7 @@
"required": ["description", "features"], "required": ["description", "features"],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"features": { "features": {
"title": "Features", "title": "Features",
@@ -28,7 +16,7 @@
"items": { "items": {
"title": "Feature", "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.", "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": "../../../../general/feature/identifier.json" "$ref": "../../../general/feature/identifier.json"
} }
} }
} }

View File

@@ -6,30 +6,21 @@
"required": ["description", "places_block", "enforce_placement_rules", "enforce_survivability_rules"], "required": ["description", "places_block", "enforce_placement_rules", "enforce_survivability_rules"],
"definitions": { "definitions": {
"block_side": { "block_side": {
"oneOf": [{ "type": "string" }, { "type": "array", "items": { "title": "Block Side", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "type": "string" } }] "oneOf": [
{ "title": "Block", "description": "Reference to the block it may attach to.", "type": "string", "$ref": "../../../general/block/identifier.json" },
{ "type": "array", "items": { "title": "Block", "description": "Reference to the block it may attach to.", "type": "string", "$ref": "../../../general/block/identifier.json" } }
]
} }
}, },
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"places_block": { "places_block": {
"title": "Places Block", "title": "Places Block",
"description": "Reference to the block to be placed.", "description": "Reference to the block to be placed.",
"type": "string", "type": "string",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
}, },
"enforce_placement_rules": { "enforce_placement_rules": {
"title": "Enforce Placement Rules", "title": "Enforce Placement Rules",
@@ -43,22 +34,20 @@
}, },
"may_attach_to": { "may_attach_to": {
"title": "May Attach To", "title": "May Attach To",
"description": "UNDOCUMENTED.", "description": "The list of valid block and block faces the given block may attach to when being placed.",
"$comment": "UNDOCUMENTED",
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {
"min_sides_must_attach": { "min_sides_must_attach": {
"title": "Minimum Sides Must Attach", "title": "Minimum Sides Must Attach",
"description": "UNDOCUMENTED.", "description": "Minimum number of sides that must be attached when being placed.",
"$comment": "UNDOCUMENTED",
"minimum": 1, "minimum": 1,
"maximum": 4 "maximum": 4
}, },
"auto_rotate": { "auto_rotate": {
"title": "Auto Rotate", "title": "Auto Rotate",
"description": "Automatically rotate the block to attach sensibly." "description": "Automatically rotate the block to attach sensibly.",
"type": "boolean"
}, },
"top": { "title": "Top", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, "top": { "title": "Top", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" },
"bottom": { "title": "Bottom", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" }, "bottom": { "title": "Bottom", "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "$ref": "#/definitions/block_side" },
@@ -74,12 +63,11 @@
"title": "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.", "description": "A list of blocks that may be replaced during placement. Omit this field to allow any block to be replaced.",
"type": "array", "type": "array",
"additionalProperties": false,
"items": { "items": {
"title": "Block", "title": "Block",
"description": "A block that may be replaced during placement. Omit this field to allow any block to be replaced.", "description": "A block that may be replaced during placement. Omit this field to allow any block to be replaced.",
"type": "string", "type": "string",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
} }
} }
} }

View File

@@ -6,28 +6,16 @@
"required": ["description", "feature_to_snap", "vertical_search_range"], "required": ["description", "feature_to_snap", "vertical_search_range"],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"feature_to_snap": { "feature_to_snap": {
"title": "Feature to snap", "title": "Feature To Snap",
"description": "Named reference of feature to be snapped.", "description": "Named reference of feature to be snapped.",
"type": "string", "type": "string",
"$ref": "../../../../general/feature/identifier.json" "$ref": "../../../general/feature/identifier.json"
}, },
"vertical_search_range": { "vertical_search_range": {
"title": "Vertical search range", "title": "Vertical Search Range",
"description": "Range to search for a floor or ceiling for snaping the feature.", "description": "Range to search for a floor or ceiling for snaping the feature.",
"type": "number" "type": "number"
}, },
@@ -35,7 +23,19 @@
"title": "Surface", "title": "Surface",
"description": "Defines the surface that the y-value of the placement position will be snapped to. Valid values: `ceiling` and `floor'", "description": "Defines the surface that the y-value of the placement position will be snapped to. Valid values: `ceiling` and `floor'",
"type": "string", "type": "string",
"enum": ["ceiling", "floor"] "enum": ["ceiling", "floor", "random_horizontal"]
},
"allow_air_placement": {
"title": "Allow Air Placement",
"description": "Determines whether the feature can snap through air blocks",
"type":"boolean",
"default": true
},
"allow_underwater_placement": {
"title": "Allow Underwater Placement",
"description": "Determines whether the feature can snap through water blocks",
"type":"boolean",
"default": false
} }
} }
} }

View File

@@ -6,19 +6,7 @@
"required": ["description", "structure_name", "constraints"], "required": ["description", "structure_name", "constraints"],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"structure_name": { "structure_name": {
"title": "Structure Name", "title": "Structure Name",
@@ -72,7 +60,7 @@
"items": { "items": {
"title": "Block", "title": "Block",
"type": "string", "type": "string",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
} }
}, },
"block_whitelist": { "block_whitelist": {
@@ -82,7 +70,7 @@
"items": { "items": {
"title": "Block", "title": "Block",
"type": "string", "type": "string",
"$ref": "../../../../general/block/identifier.json" "$ref": "../../../general/block/identifier.json"
} }
} }
} }

View File

@@ -0,0 +1,24 @@
{
"type": "object",
"title": "Surface Relative Threshold Feature",
"description": "'minecraft:surface_relative_threshold_feature' determines whether the provided position is below the estimated surface level of the world, and places a feature if so.If the provided position is above configured surface or the surface is not available, placement will fail.",
"additionalProperties": false,
"required": ["feature_to_place", "description"],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"feature_to_place": {
"title": "Feature To Place",
"description": "Named reference of feature to be placed.",
"type": "string",
"$ref": "../../../general/feature/identifier.json"
},
"minimum_distance_below_surface": {
"title": "Minimum Distance Below Surface",
"description": "The minimum number of blocks required to be between the estimated surface level and a valid place for this feature.",
"type": "integer",
"default": 0
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,79 @@
{
"title": "Underwater Cave Carver Feature",
"description": "'minecraft:underwater_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 specifically target creating caves only below sea level.\nThis feature will also only work when placed specifically in the pass `pregeneration_pass`.",
"type": "object",
"additionalProperties": false,
"required": ["description"],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"fill_with": {
"title": "Fill With",
"description": "Reference to the block to fill the cave with.",
"$ref": "../../../general/block/identifier.json"
},
"width_modifier": {
"title": "Width Modifier",
"description": "How many blocks to increase the cave radius by, from the center point of the cave.",
"$ref": "../../../molang/number.json"
},
"skip_carve_chance": {
"title": "Skip Carve Chance",
"description": "The chance to skip doing the carve (1 / value).",
"type": "integer",
"minimum": 1
},
"height_limit": {
"title": "Height Limit",
"description": "The height limit where we attempt to carve",
"type": "integer"
},
"y_scale": {
"type": "array",
"title": "Y Scale",
"description": "The scaling in y",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"horizontal_radius_multiplier": {
"type": "array",
"title": "Horizontal Radius Multiplier",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"vertical_radius_multiplier": {
"type": "array",
"title": "Vertical Radius Multiplier",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"floor_level": {
"type": "array",
"title": "Floor Level",
"minItems": 2,
"maxItems": 2,
"items": [
{ "type": "number", "title": "Min" },
{ "type": "number", "title": "Max" }
]
},
"replace_air_with": {
"title": "Replace Air With",
"description": "Reference to the block to replace air blocks with.",
"$ref": "../../../general/block/identifier.json"
}
}
}

View File

@@ -0,0 +1,86 @@
{
"title": "Vegetation Patch Feature",
"description": "Feature type `minecraft:vegetation_patch_feature` has not yet been documented.",
"type": "object",
"additionalProperties": false,
"required": ["description", "replaceable_blocks", "ground_block", "horizontal_radius", "vegetation_feature"],
"properties": {
"description": {
"$ref": "../types/description.json"
},
"replaceable_blocks": {
"title": "Replaceable Blocks",
"description": "Blocks that can be replaced by the ground blocks on the patch.",
"type": "array",
"items": {
"title": "Replace Block",
"type": "string",
"$ref": "../../../general/block/identifier.json"
}
},
"ground_block": {
"title": "Ground Block",
"description": "Block used to create a base for the vegetation patch.",
"type": "string",
"$ref": "../../../general/block/identifier.json"
},
"vegetation_feature": {
"title": "Vegetation Feature",
"description": "Feature that will be placed by the patch.",
"type": "string",
"$ref": "../../../general/feature/identifier.json",
"minimum": 0,
"maximum": 1
},
"surface": {
"title": "Surface",
"description": "Determines if a vegetation patch will grow from the ceiling or the floor.",
"enum": ["floor", "ceiling"],
"default": "floor"
},
"depth": {
"title": "Depth",
"description": "Depth of the base covered by the ground blocks.",
"type": "integer",
"minimum": 0
},
"extra_deep_block_chance": {
"title": "Extra Deep Block Chance",
"description": "Probability of putting the ground blocks one block deeper. Adds some randomness to the bottom of the patch.",
"type": "number",
"minimum": 0,
"maximum": 1
},
"vertical_range": {
"title": "Vertical Range",
"description": "Vertical range used to determine a suitable surface position for the patch.",
"type": "integer",
"minimum": 1
},
"vegetation_chance": {
"title": "Vegatation Chance",
"description": "Probability of spawning vegetation on the patch. Larger numbers create a denser vegetation patch.",
"type": "number",
"minimum": 0
},
"horizontal_radius": {
"title": "Horizontal Radius",
"description": "Horizontal area that the vegetation patch will cover.",
"type": "integer",
"minimum": 1
},
"extra_edge_column_chance": {
"title": "Extra Egde Column Chance",
"description": "Probability of spawning vegetation on the edge of the patch radius.",
"type": "number",
"minimum": 0,
"maximum": 1
},
"waterlogged": {
"title": "Waterlogged",
"description": "If true, waterlogs the positions occupied by the ground blocks.",
"type": "boolean",
"default": false
}
}
}

View File

@@ -6,19 +6,7 @@
"required": ["description", "features"], "required": ["description", "features"],
"properties": { "properties": {
"description": { "description": {
"title": "Description", "$ref": "../types/description.json"
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"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": "../../../../general/feature/identifier.json"
}
}
}, },
"features": { "features": {
"title": "Features", "title": "Features",
@@ -30,7 +18,7 @@
"description": "Named reference to a feature.", "description": "Named reference to a feature.",
"type": "array", "type": "array",
"items": [ "items": [
{ "title": "Feature", "description": "Named reference to a feature.", "$ref": "../../../../general/feature/identifier.json" }, { "title": "Feature", "description": "Named reference to a feature.", "$ref": "../../../general/feature/identifier.json" },
{ {
"title": "Weight", "title": "Weight",
"description": "Weight used in random selection. Value is relative to other weights in the collection.", "description": "Weight used in random selection. Value is relative to other weights in the collection.",

View File

@@ -1,4 +0,0 @@
UP and DOWN can be lowercase or uppercase.
Head and body blocks must be arrays of arrays (see my code).
The first value of an array in the height distribution array or the value of the "age" property may be of the form `{"range_min": 1, "range_max": 13}`
or an integer. In other words, the schema is terrible with this one. Again, see my code.

View File

@@ -1,3 +0,0 @@
# ore
All references are just block descriptors.

View File

@@ -1,2 +0,0 @@
This feature is currently bugged and rather worthless. Presumably, ratio_of_empty_space will only be on [0, 1], but I can't promise this is true. The
area dimensions may also be restricted by maximum logical sizes, but I can't verify that, either. Otherwise, the schema is probably correct.

View File

@@ -1,5 +0,0 @@
# Scatter features note
The Mojang schema for these features is perfectly valid with a caveat: In scatter features, "x", "y", "z", "scatter_chance", and "iterations" can also
be numbers, as can the "extents" of any of the coordinates. Well, the extents are arrays, but their bounds can be numbers. Finally, note that anywhere
a block can be placed in features, a stateful notation can be used, as I describe here: https://wiki.bedrock.dev/concepts/biomes#block-types

View File

@@ -0,0 +1,21 @@
{
"$id": "blockception.minecraft.behavior.features.chance_information",
"additionalProperties": false,
"type": "object",
"title": "Chance Information",
"description": "Chance of something happening represented either as a fraction or a percentage.",
"anyOf": [
{
"type": "object",
"properties": {
"numerator": { "type": "number", "minimum": 1, "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "title": "Numerator" },
"denominator": { "type": "number", "minimum": 1, "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "title": "Denominator" }
}
},
{
"type":"number",
"minimum": 0,
"maximum": 100
}
]
}

View File

@@ -0,0 +1,17 @@
{
"$id": "blockception.minecraft.behavior.features.description",
"title": "Description",
"description": "Feature's description containing the identifier",
"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": "../../../general/feature/identifier.json"
}
}
}

View File

@@ -1,15 +0,0 @@
"replaceable_blocks": array of block references or stateful objects, required even if empty (but useless if empty),
"ground_block": block reference, required
"waterlogged": boolean, opt, defaults to false,
"surface": string: "floor"|"ceiling", opt, defaults to "floor"
"horizontal_radius": int (maybe floats work but are probably truncated), required, must be 0 or greater for feature to work, but no error is thrown if
negative is given
"vertical_range": int >= 0, required, values below 0 clamped,
"depth": int, required, typically 1+, 0 acts like 1, negative values do have functionality, though: continue downward indefinitely until hitting an
invalid block or world boundary,
"extra_deep_block_chance": float, [0, 1], values above or below clamped, opt, defaults to 0
"extra_edge_column_chance": float, [0, 1], values above or below clamped, opt, defaults to 0
"vegetation_feature": feature reference, required, doesn't do anything when vegetation_chance is 0 or less,
"vegetation_chance": float, [0, 1], values above or below clamped, opt, defaults to 0

View File

@@ -1,12 +0,0 @@
{
"$id": "blockception.minecraft.general.1.14.0.chance_information",
"additionalProperties": false,
"type": "object",
"title": "Chance Information",
"description": "UNDOCUMENTED.",
"$comment": "UNDOCUMENTED",
"properties": {
"numerator": { "type": "number", "minimum": 1, "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "title": "Numerator" },
"denominator": { "type": "number", "minimum": 1, "description": "UNDOCUMENTED.", "$comment": "UNDOCUMENTED", "title": "Denominator" }
}
}