diff --git a/source/behavior/features/1.13.0/features.json b/source/behavior/features/1.13.0/features.json new file mode 100644 index 00000000..e145dfc3 --- /dev/null +++ b/source/behavior/features/1.13.0/features.json @@ -0,0 +1,40 @@ +{ + "$id": "blockception.minecraft.behavior.features.1.13.0", + "type": "object", + "title": "Spawn Rules 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": "./minecraft:beards_and_shaversfeatures/minecraft.beards_and_shavers.json" }, + "minecraft:cave_carver_feature": { "$ref": "./minecraft:cave_carver_featurefeatures/minecraft.cave_carver_feature.json" }, + "minecraft:conditional_list": { "$ref": "./minecraft:conditional_listfeatures/minecraft.conditional_list.json" }, + "minecraft:geode_feature": { "$ref": "./minecraft:geode_featurefeatures/minecraft.geode_feature.json" }, + "minecraft:growing_plant_feature": { "$ref": "./minecraft:growing_plant_featurefeatures/minecraft.growing_plant_feature.json" }, + "minecraft:hell_cave_carver_feature": { "$ref": "./minecraft:hell_cave_carver_featurefeatures/minecraft.hell_cave_carver_feature.json" }, + "minecraft:multiface_feature": { "$ref": "./minecraft:multiface_featurefeatures/minecraft.multiface_feature.json" }, + "minecraft:ore_feature": { "$ref": "./minecraft:ore_featurefeatures/minecraft.ore_feature.json" }, + "minecraft:rect_layout": { "$ref": "./minecraft:rect_layoutfeatures/minecraft.rect_layout.json" }, + "minecraft:scan_surface": { "$ref": "./minecraft:scan_surfacefeatures/minecraft.scan_surface.json" }, + "minecraft:scatter_feature": { "$ref": "./minecraft:scatter_featurefeatures/minecraft.scatter_feature.json" }, + "minecraft:search_feature": { "$ref": "./minecraft:search_featurefeatures/minecraft.search_feature.json" }, + "minecraft:sequence_feature": { "$ref": "./minecraft:sequence_featurefeatures/minecraft.sequence_feature.json" }, + "minecraft:single_block_feature": { "$ref": "./minecraft:single_block_featurefeatures/minecraft.single_block_feature.json" }, + "minecraft:snap_to_surface_feature": { "$ref": "./minecraft:snap_to_surface_featurefeatures/minecraft.snap_to_surface_feature.json" }, + "minecraft:structure_template_feature": { "$ref": "./minecraft:structure_template_featurefeatures/minecraft.structure_template_feature.json" }, + "minecraft:tree_feature": { "$ref": "./minecraft:tree_featurefeatures/minecraft.tree_feature.json" }, + "minecraft:underwater_cave_carver_feature": { + "$ref": "./minecraft:underwater_cave_carver_featurefeatures/minecraft.underwater_cave_carver_feature.json" + }, + "minecraft:vegetation_patch_feature": { "$ref": "./minecraft:vegetation_patch_featurefeatures/minecraft.vegetation_patch_feature.json" }, + "minecraft:weighted_random_feature": { "$ref": "./minecraft:weighted_random_featurefeatures/minecraft.weighted_random_feature.json" } + } +} diff --git a/source/behavior/features/1.13.0/features/minecraft.aggregate_feature.json b/source/behavior/features/1.13.0/features/minecraft.aggregate_feature.json new file mode 100644 index 00000000..b86f652d --- /dev/null +++ b/source/behavior/features/1.13.0/features/minecraft.aggregate_feature.json @@ -0,0 +1,38 @@ +{ + "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. Succeeds if: At lease one feature is placed successfully. 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": "../../../../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": "", + "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"] + } + } +} diff --git a/source/behavior/features/features.json b/source/behavior/features/features.json new file mode 100644 index 00000000..ec4dbf2b --- /dev/null +++ b/source/behavior/features/features.json @@ -0,0 +1,16 @@ +{ + "$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.17.0" } } }, "then": { "$ref": "./1.17.0/features.json" } }, + { "properties": { "format_version": { "$ref": "../../general/format_version.json" } } } + ] +} diff --git a/source/compress_specification.json b/source/compress_specification.json index 2b7d0607..e7d2231d 100644 --- a/source/compress_specification.json +++ b/source/compress_specification.json @@ -37,6 +37,7 @@ { "Source": "./behavior/loot_tables/loot_tables.json", "Destination": "../behavior/loot_tables/loot_tables.json" }, { "Source": "./behavior/blocks/blocks.json", "Destination": "../behavior/blocks/blocks.json" }, { "Source": "./behavior/entities/entities.json", "Destination": "../behavior/entities/entities.json" }, + { "Source": "./behavior/features/features.json", "Destination": "../behavior/features/features.json" }, { "Source": "./behavior/items/items.json", "Destination": "../behavior/items/items.json" }, { "Source": "./behavior/recipes/recipes.json", "Destination": "../behavior/recipes/recipes.json" }, { "Source": "./behavior/spawn_rules/spawn_rules.json", "Destination": "../behavior/spawn_rules/spawn_rules.json" }, diff --git a/source/general/feature/identifier.json b/source/general/feature/identifier.json new file mode 100644 index 00000000..22ffe16c --- /dev/null +++ b/source/general/feature/identifier.json @@ -0,0 +1,8 @@ +{ + "$id": "blockception.minecraft.entity.identifier.1.8.0", + "type": "string", + "title": "Entity Identifier 1.8.0", + "description": "The minecraft entity identifier", + "examples": ["namespace:entity_name"], + "pattern": "^[0-9a-zA-Z:_\\.\\-]+$" +}