From 87f2b9c9c2bc7580b970455354f144fa49320429 Mon Sep 17 00:00:00 2001 From: DaanV2 Date: Thu, 3 Jun 2021 20:40:45 +0200 Subject: [PATCH] Adding the start of features --- source/behavior/features/1.13.0/features.json | 40 +++++++++++++++++++ .../features/minecraft.aggregate_feature.json | 38 ++++++++++++++++++ source/behavior/features/features.json | 16 ++++++++ source/compress_specification.json | 1 + source/general/feature/identifier.json | 8 ++++ 5 files changed, 103 insertions(+) create mode 100644 source/behavior/features/1.13.0/features.json create mode 100644 source/behavior/features/1.13.0/features/minecraft.aggregate_feature.json create mode 100644 source/behavior/features/features.json create mode 100644 source/general/feature/identifier.json 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:_\\.\\-]+$" +}