diff --git a/.vscode/schema-validation.json b/.vscode/schema-validation.json index f2eebc2f..f8697b15 100644 --- a/.vscode/schema-validation.json +++ b/.vscode/schema-validation.json @@ -4,7 +4,10 @@ "object_check": { "type": "object", "dependencies": { - "description": ["title"] + "description": ["title"], + "additionalProperties": ["type"], + "items": ["type"], + "properties": ["type"] }, "additionalProperties": { "anyOf": [ diff --git a/examples/bp/feature_rules/ore_feature_placement.json b/examples/bp/feature_rules/ore_feature_placement.json new file mode 100644 index 00000000..a89b7b30 --- /dev/null +++ b/examples/bp/feature_rules/ore_feature_placement.json @@ -0,0 +1,22 @@ +{ + "format_version": "1.13.0", + + "minecraft:feature_rules": { + "description": { + "identifier": "ore_features:ore_feature_placement", + "places_feature": "ore_features:ore_feature" + }, + + "conditions": { + "placement_pass": "final_pass" + }, + + "distribution": { + "iterations": 1, + + "x": 0, + "z": 0, + "y": "query.heightmap(v.worldx, v.worldz)" + } + } +} \ No newline at end of file diff --git a/examples/bp/feature_rules/search_feature_placement.json b/examples/bp/feature_rules/search_feature_placement.json new file mode 100644 index 00000000..f41bef33 --- /dev/null +++ b/examples/bp/feature_rules/search_feature_placement.json @@ -0,0 +1,22 @@ +{ + "format_version": "1.13.0", + + "minecraft:feature_rules": { + "description": { + "identifier": "search_features:search_feature_placement", + "places_feature": "search_features:search_feature" + }, + + "conditions": { + "placement_pass": "final_pass" + }, + + "distribution": { + "iterations": 1, + + "x": 0, + "z": 0, + "y": 0 + } + } +} \ No newline at end of file diff --git a/examples/bp/feature_rules/sequence_feature_placement.json b/examples/bp/feature_rules/sequence_feature_placement.json new file mode 100644 index 00000000..5d0f28f7 --- /dev/null +++ b/examples/bp/feature_rules/sequence_feature_placement.json @@ -0,0 +1,22 @@ +{ + "format_version": "1.13.0", + + "minecraft:feature_rules": { + "description": { + "identifier": "sequence_features:sequence_feature_placement", + "places_feature": "sequence_features:sequence_feature" + }, + + "conditions": { + "placement_pass": "final_pass" + }, + + "distribution": { + "iterations": 1, + + "x": 0, + "z": 0, + "y": 90 + } + } +} \ No newline at end of file diff --git a/examples/bp/feature_rules/tree_feature_placement.json b/examples/bp/feature_rules/tree_feature_placement.json new file mode 100644 index 00000000..a84a625e --- /dev/null +++ b/examples/bp/feature_rules/tree_feature_placement.json @@ -0,0 +1,23 @@ +{ + "format_version": "1.13.0", + + "minecraft:feature_rules": { + "description": { + "identifier": "tree_features:tree_feature_placement", + "places_feature": "tree_features:tree_feature" + }, + + "conditions": { + "placement_pass": "final_pass" + }, + + "distribution": { + "iterations": 1, + "scatter_chance": 2, + + "x": 0, + "z": 0, + "y": 90 + } + } +} \ No newline at end of file diff --git a/examples/bp/features/ore.md b/examples/bp/features/ore.md new file mode 100644 index 00000000..31b1d2e5 --- /dev/null +++ b/examples/bp/features/ore.md @@ -0,0 +1,3 @@ +# ore + +All references are just block descriptors. diff --git a/examples/bp/features/ore_feature.json b/examples/bp/features/ore_feature.json new file mode 100644 index 00000000..3fe87069 --- /dev/null +++ b/examples/bp/features/ore_feature.json @@ -0,0 +1,21 @@ +{ + "format_version": "1.13.0", + + "minecraft:ore_feature": { + "description": { + "identifier": "ore_features:ore_feature" + }, + + "count": 25, + "replace_rules": [ + { + "places_block": "minecraft:glass", + "may_replace": ["minecraft:air"] + }, + { + "places_block": "minecraft:cobblestone", + "may_replace": ["minecraft:grass", "minecraft:stone", "minecraft:dirt"] + } + ] + } +} diff --git a/examples/bp/features/search_feature.json b/examples/bp/features/search_feature.json new file mode 100644 index 00000000..9e38e460 --- /dev/null +++ b/examples/bp/features/search_feature.json @@ -0,0 +1,16 @@ +{ + "format_version": "1.13.0", + //The schema is exactly right; floats can be used for volume, but they're truncated as always, so indeed integers are the recommended type. + "minecraft:search_feature": { + "description": { + "identifier": "search_features:search_feature" + }, + "places_feature": "search_features:search_feature_obsidian", + "search_volume": { + "min": [0, 30, 15], + "max": [0, 100, 15] + }, + "search_axis": "-y", + "required_successes": 3 + } +} diff --git a/examples/bp/features/search_feature_obsidian.json b/examples/bp/features/search_feature_obsidian.json new file mode 100644 index 00000000..4bdbf0b9 --- /dev/null +++ b/examples/bp/features/search_feature_obsidian.json @@ -0,0 +1,20 @@ +{ + "format_version": "1.13.0", + + "minecraft:single_block_feature": { + "description": { + "identifier": "search_features:search_feature_obsidian" + }, + + "places_block": "minecraft:obsidian", + + "enforce_placement_rules": false, + "enforce_survivability_rules": false, + "may_replace": ["minecraft:air"], + "may_attach_to": { + "top": [ + "minecraft:air" + ] + } + } +} \ No newline at end of file diff --git a/examples/bp/features/sequence_feature.json b/examples/bp/features/sequence_feature.json new file mode 100644 index 00000000..a8540192 --- /dev/null +++ b/examples/bp/features/sequence_feature.json @@ -0,0 +1,14 @@ +{ + "format_version": "1.13.0", + + "minecraft:sequence_feature": { + "description": { + "identifier": "sequence_features:sequence_feature" + }, + + "features": [ + "tree_features:tree_feature", + "sequence_features:sequence_feature_planks" + ] + } +} \ No newline at end of file diff --git a/examples/bp/features/sequence_feature_planks.json b/examples/bp/features/sequence_feature_planks.json new file mode 100644 index 00000000..005ff880 --- /dev/null +++ b/examples/bp/features/sequence_feature_planks.json @@ -0,0 +1,14 @@ +{ + "format_version": "1.13.0", + //They're broken: always have been. They don't throw errors, but they don't reposition based on input/output. No errors are thrown, it just doesn't do its job. The schema is correct. + "minecraft:single_block_feature": { + "description": { + "identifier": "sequence_features:sequence_feature_planks" + }, + + "places_block": "minecraft:planks", + + "enforce_placement_rules": false, + "enforce_survivability_rules": false + } +} diff --git a/examples/bp/features/structure_feature.json b/examples/bp/features/structure_feature.json new file mode 100644 index 00000000..d77f27d2 --- /dev/null +++ b/examples/bp/features/structure_feature.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.13.0", + "minecraft:structure_template_feature": { + "description": { + "identifier": "structure_features:structure_feature" + }, + + "structure_name": "structure_features:structure", + + "facing_direction": "south", + "adjustment_radius": 0, + + "constraints": {} + } +} diff --git a/examples/bp/features/tree_feature.json b/examples/bp/features/tree_feature.json new file mode 100644 index 00000000..7103db6b --- /dev/null +++ b/examples/bp/features/tree_feature.json @@ -0,0 +1,45 @@ +{ + "format_version": "1.13.0", + "minecraft:tree_feature": { + "description": { + "identifier": "tree_features:tree_feature" + }, + + "base_block": [ + "minecraft:dirt", + "minecraft:coarse_dirt" + ], + "base_cluster": { + "num_clusters": 4, + "cluster_radius": 3, + "may_replace": ["minecraft:air"] + }, + + "may_replace": ["minecraft:air"], + + "fancy_trunk": { + "trunk_block": "minecraft:log", + + "trunk_height": { + "base": 24, + "variance": 1, + "scale": 1 + }, + "trunk_width": 3, + "width_scale": 2, + + "foliage_altitude_factor": 0.5, + "branches": { + "slope": 0.33, + "density": 0.25, + "min_altitude_factor": 0 + } + }, + + "fancy_canopy": { + "height": 3, + "radius": 4, + "leaf_block": "minecraft:leaves" + } + } +} \ No newline at end of file diff --git a/examples/bp/structures/structure_features/structure.mcstructure b/examples/bp/structures/structure_features/structure.mcstructure new file mode 100644 index 00000000..e374245f Binary files /dev/null and b/examples/bp/structures/structure_features/structure.mcstructure differ