Moved to test
This commit is contained in:
22
test/bp/feature_rules/aggregate_feature_placement.json
Normal file
22
test/bp/feature_rules/aggregate_feature_placement.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:feature_rules": {
|
||||
"description": {
|
||||
"identifier": "aggregate_features:aggregate_feature_placement",
|
||||
"places_feature": "aggregate_features:aggregate_feature"
|
||||
},
|
||||
|
||||
"conditions": {
|
||||
"placement_pass": "final_pass"
|
||||
},
|
||||
|
||||
"distribution": {
|
||||
"iterations": 1,
|
||||
|
||||
"x": 0,
|
||||
"z": 0,
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
||||
22
test/bp/feature_rules/ore_feature_placement.json
Normal file
22
test/bp/feature_rules/ore_feature_placement.json
Normal file
@@ -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)"
|
||||
}
|
||||
}
|
||||
}
|
||||
22
test/bp/feature_rules/scatter_feature_placement.json
Normal file
22
test/bp/feature_rules/scatter_feature_placement.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:feature_rules": {
|
||||
"description": {
|
||||
"identifier": "scatter_and_singleblock_features:scatter_feature_placement",
|
||||
"places_feature": "scatter_and_singleblock_features:scatter_feature"
|
||||
},
|
||||
|
||||
"conditions": {
|
||||
"placement_pass": "final_pass"
|
||||
},
|
||||
|
||||
"distribution": {
|
||||
"iterations": 1,
|
||||
|
||||
"x": 0,
|
||||
"z": 0,
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
||||
22
test/bp/feature_rules/search_feature_placement.json
Normal file
22
test/bp/feature_rules/search_feature_placement.json
Normal file
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
22
test/bp/feature_rules/sequence_feature_placement.json
Normal file
22
test/bp/feature_rules/sequence_feature_placement.json
Normal file
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
23
test/bp/feature_rules/tree_feature_placement.json
Normal file
23
test/bp/feature_rules/tree_feature_placement.json
Normal file
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
22
test/bp/feature_rules/weighted_random_feature_placement.json
Normal file
22
test/bp/feature_rules/weighted_random_feature_placement.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:feature_rules": {
|
||||
"description": {
|
||||
"identifier": "weighted_random_features:weighted_random_feature_placement",
|
||||
"places_feature": "weighted_random_features:weighted_random_feature"
|
||||
},
|
||||
|
||||
"conditions": {
|
||||
"placement_pass": "final_pass"
|
||||
},
|
||||
|
||||
"distribution": {
|
||||
"iterations": 1,
|
||||
|
||||
"x": 0,
|
||||
"z": 0,
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
||||
15
test/bp/features/aggregate_feature.json
Normal file
15
test/bp/features/aggregate_feature.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:aggregate_feature": {
|
||||
"description": {
|
||||
"identifier": "aggregate_features:aggregate_feature"
|
||||
},
|
||||
|
||||
"features": [
|
||||
"aggregate_features:aggregate_feature_obsidian",
|
||||
"aggregate_features:aggregate_feature_planks_placement"
|
||||
],
|
||||
"early_out": "first_failure"
|
||||
}
|
||||
}
|
||||
14
test/bp/features/aggregate_feature_obsidian.json
Normal file
14
test/bp/features/aggregate_feature_obsidian.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:single_block_feature": {
|
||||
"description": {
|
||||
"identifier": "aggregate_features:aggregate_feature_obsidian"
|
||||
},
|
||||
|
||||
"places_block": "minecraft:obsidian",
|
||||
|
||||
"enforce_placement_rules": false,
|
||||
"enforce_survivability_rules": false
|
||||
}
|
||||
}
|
||||
14
test/bp/features/aggregate_feature_planks.json
Normal file
14
test/bp/features/aggregate_feature_planks.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:single_block_feature": {
|
||||
"description": {
|
||||
"identifier": "aggregate_features:aggregate_feature_planks"
|
||||
},
|
||||
|
||||
"places_block": "minecraft:planks",
|
||||
|
||||
"enforce_placement_rules": false,
|
||||
"enforce_survivability_rules": false
|
||||
}
|
||||
}
|
||||
17
test/bp/features/aggregate_feature_planks_placement.json
Normal file
17
test/bp/features/aggregate_feature_planks_placement.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:scatter_feature": {
|
||||
"description": {
|
||||
"identifier": "aggregate_features:aggregate_feature_planks_placement"
|
||||
},
|
||||
|
||||
"places_feature": "aggregate_features:aggregate_feature_planks",
|
||||
|
||||
"iterations": 1,
|
||||
|
||||
"x": 0,
|
||||
"z": 4,
|
||||
"y": 0
|
||||
}
|
||||
}
|
||||
3
test/bp/features/ore.md
Normal file
3
test/bp/features/ore.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# ore
|
||||
|
||||
All references are just block descriptors.
|
||||
21
test/bp/features/ore_feature.json
Normal file
21
test/bp/features/ore_feature.json
Normal file
@@ -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"]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
5
test/bp/features/scatter.md
Normal file
5
test/bp/features/scatter.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# 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
|
||||
31
test/bp/features/scatter_feature.json
Normal file
31
test/bp/features/scatter_feature.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:scatter_feature": {
|
||||
"description": {
|
||||
"identifier": "scatter_and_singleblock_features:scatter_feature"
|
||||
},
|
||||
|
||||
"places_feature": "scatter_and_singleblock_features:scatter_feature_obsidian",
|
||||
|
||||
"scatter_chance": {
|
||||
"numerator": 2,
|
||||
"denominator": 3
|
||||
},
|
||||
"iterations": "math.pow(2, 4)",
|
||||
|
||||
"coordinate_eval_order": "zxy",
|
||||
"project_input_to_floor": true,
|
||||
"z": {
|
||||
"distribution": "fixed_grid",
|
||||
"extent": [10, 15],
|
||||
"step_size": 2,
|
||||
"grid_offset": 3
|
||||
},
|
||||
"x": {
|
||||
"distribution": "gaussian",
|
||||
"extent": ["(v.worldx < 12) * 2", 16]
|
||||
},
|
||||
"y": 0
|
||||
}
|
||||
}
|
||||
19
test/bp/features/scatter_feature_obsidian.json
Normal file
19
test/bp/features/scatter_feature_obsidian.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:single_block_feature": {
|
||||
"description": {
|
||||
"identifier": "scatter_and_singleblock_features:scatter_feature_obsidian"
|
||||
},
|
||||
|
||||
"places_block": "minecraft:obsidian",
|
||||
|
||||
"enforce_placement_rules": true,
|
||||
"enforce_survivability_rules": true,
|
||||
"may_replace": ["minecraft:air"],
|
||||
"may_attach_to": {
|
||||
"min_sides_must_attach": 2,
|
||||
"sides": ["minecraft:air"]
|
||||
}
|
||||
}
|
||||
}
|
||||
16
test/bp/features/search_feature.json
Normal file
16
test/bp/features/search_feature.json
Normal file
@@ -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
|
||||
}
|
||||
}
|
||||
20
test/bp/features/search_feature_obsidian.json
Normal file
20
test/bp/features/search_feature_obsidian.json
Normal file
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
14
test/bp/features/sequence_feature.json
Normal file
14
test/bp/features/sequence_feature.json
Normal file
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
14
test/bp/features/sequence_feature_planks.json
Normal file
14
test/bp/features/sequence_feature_planks.json
Normal file
@@ -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
|
||||
}
|
||||
}
|
||||
15
test/bp/features/structure_feature.json
Normal file
15
test/bp/features/structure_feature.json
Normal file
@@ -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": {}
|
||||
}
|
||||
}
|
||||
45
test/bp/features/tree_feature.json
Normal file
45
test/bp/features/tree_feature.json
Normal file
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
15
test/bp/features/weighted_random_feature.json
Normal file
15
test/bp/features/weighted_random_feature.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:weighted_random_feature": {
|
||||
"description": {
|
||||
"identifier": "weighted_random_features:weighted_random_feature"
|
||||
},
|
||||
|
||||
"features": [
|
||||
//The schema says float for weights, but the game truncates it. You should enforce integers.
|
||||
["weighted_random_features:weighted_random_feature_obsidian", 3],
|
||||
["weighted_random_features:weighted_random_feature_planks", 1]
|
||||
]
|
||||
}
|
||||
}
|
||||
14
test/bp/features/weighted_random_feature_obsidian.json
Normal file
14
test/bp/features/weighted_random_feature_obsidian.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:single_block_feature": {
|
||||
"description": {
|
||||
"identifier": "aggregate_features:aggregate_feature_obsidian"
|
||||
},
|
||||
|
||||
"places_block": "minecraft:obsidian",
|
||||
|
||||
"enforce_placement_rules": false,
|
||||
"enforce_survivability_rules": false
|
||||
}
|
||||
}
|
||||
14
test/bp/features/weighted_random_feature_planks.json
Normal file
14
test/bp/features/weighted_random_feature_planks.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
|
||||
"minecraft:single_block_feature": {
|
||||
"description": {
|
||||
"identifier": "aggregate_features:aggregate_feature_planks"
|
||||
},
|
||||
|
||||
"places_block": "minecraft:planks",
|
||||
|
||||
"enforce_placement_rules": false,
|
||||
"enforce_survivability_rules": false
|
||||
}
|
||||
}
|
||||
23
test/bp/manifest.json
Normal file
23
test/bp/manifest.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"format_version": 2,
|
||||
|
||||
"metadata": {
|
||||
"authors": ["Christopher Cook"]
|
||||
},
|
||||
|
||||
"header": {
|
||||
"name": "Aggregate Features",
|
||||
"uuid": "9f562163-9835-4d63-90a5-558f198088f9",
|
||||
"description": "Tests aggregate features",
|
||||
"version": [1, 0, 0],
|
||||
"min_engine_version": [1, 17, 0]
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"type": "data",
|
||||
"description": "Behavior pack for Aggregate Features",
|
||||
"uuid": "82df4a01-6431-4d4c-9d20-d62409481ad4",
|
||||
"version": [1, 0, 0]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
test/bp/pack_icon.png
Normal file
BIN
test/bp/pack_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 186 B |
BIN
test/bp/structures/structure_features/structure.mcstructure
Normal file
BIN
test/bp/structures/structure_features/structure.mcstructure
Normal file
Binary file not shown.
Reference in New Issue
Block a user