Minecraft基岩版允許自訂生態系,並在世界中生成建築物。
例如 Expansive Fantasy和 Expansive Biomes這二個Add-On,不只新增地形豐富的生態系,還有新生物。
這篇文章會教學製作一個生成機率很高的「糖果」生態系,並在裡面生成糖果樹、糖果屋。
新增的方塊有糖果草地、糖果磚、糖果樹幹,這個生態系會以這些方塊做為基礎。
影片版教學:
1. 新增糖果方塊#
這部分的細節參考 如何新增方塊。
2. 準備建築物#
Mineraft Add-On的建築物可以用結構方塊來儲存。
在新增生態系前,先使用糖果方塊蓋好房子,拿出Minecraft原版的結構方塊,把這個糖果屋儲存成.structure
檔案。
注意結構方塊儲存時,命名空間只能使用"mystructure",然後不要把結構方塊本身也儲存進去。如果希望裡面有生物的話,儲存時可勾選包含實體。
例如這個檔案儲存成candy_house.mcstructure
。把該檔案放到行為包的structures/
資料夾裡面。
如果不會用結構方塊可以看這部影片:
3. 新增生態系#
這個糖果生態系會以糖果草地作為表層,然後底下的方塊都是糖果土。
不過1.17大改世界生成的機制,因此這個只會生成在地表附近,地下可能還是會有天然洞穴。
在行為包biomes
資料夾新增candy_biome.json
,這個檔案定義了糖果生態系的構成方塊以及生成機率。輸入以下內容:
{
"format_version": "1.17.0",
"minecraft:biome": {
"description": {
//不需要命名空間
"identifier": "candy_biome"
},
"components": {
//氣候
"minecraft:climate": {
"downfall": 0.2,
"temperature": 15
},
//地形高度
"minecraft:overworld_height": {
"noise_type": "lowlands",
"noise_params": [
0.4,
0.6
]
},
//生成的方塊
"minecraft:surface_parameters": {
//河的深度
"sea_floor_depth": 5,
"sea_floor_material": "minecraft:water",
//地下方塊
"foundation_material": "bridge:dirt_candy",
"mid_material": "bridge:dirt_candy",
//表層方塊
"top_material": "bridge:grass_candy",
"sea_material": "minecraft:water"
},
//生成機率
"minecraft:overworld_generation_rules": {
//以氣候來判別
"generate_for_climates": [
[
"medium",
80
],
[
"warm",
80
],
[
"cold",
80
]
]
},
//識別用的標籤
"candy_biome": {}
}
}
}
4. 設定建築物生成條件#
放好.mcstructure檔案之後,再來就是設定生成條件。
建築物、樹、礦物等都屬於feature,因此在行為包features/
資料夾新增candy_house.json
:
{
"format_version": "1.13.0",
"minecraft:structure_template_feature": {
"description": {
"identifier": "bridge:candy_house"
},
//結構方塊儲存時只能以mystructure當命名空間
"structure_name": "mystructure:candy_house",
"adjustment_radius": 4,
//可指定生成時面朝東南西北,或者隨機
"facing_direction": "random",
//生成要素
"constraints": {
"grounded": {},
"unburied": {},
"block_intersection": {
"block_allowlist": [
"minecraft:air"
]
}
}
}
}
再來設定生成條件,行為包feature_rules/
資料夾新增candy_house_feature.json
:
{
"format_version": "1.13.0",
"minecraft:feature_rules": {
"description": {
"identifier": "bridge:candy_house_feature",
"places_feature": "bridge:candy_house"
},
"conditions": {
"placement_pass": "before_surface_pass"
},
"distribution": {
"iterations": 10,
"x": {
"distribution": "uniform",
"extent": [
0,
8
]
},
"y": {
"distribution": "uniform",
"extent": [
0,
"query.heightmap(variable.worldx, variable.worldz) * 1.5"
]
},
"z": {
"distribution": "uniform",
"extent": [
0,
8
]
}
}
}
}
5. 新增糖果樹#
樹木也可以當成建築物來處理,但Minecraft有內建的樹木生成feature可以使用,類似的還有礦物feature、植物feature、紫水晶feature,這些feature可直接套用Minecraft原版的生成機制。
在行為包features/
資料夾,定義糖果樹的feature,新增candy_tree.json
:
{
"format_version": "1.17.0",
"minecraft:tree_feature": {
"description": {
"identifier": "bridge:candy_tree"
},
"base_block": [
"bridge:grass_candy"
],
//樹叢
"base_cluster": {
"may_replace": [
"minecraft:air"
],
"cluster_radius": 5,
"num_clusters": 5
},
//生長的方塊
"may_grow_on": [
{
"name": "bridge:grass_candy"
}
],
"may_replace": [
{
"name": "minecraft:air"
}
],
//樹幹
"fancy_trunk": {
"trunk_block": "bridge:log_candy",
"trunk_height": {
"base": 12,
"variance": 9,
"scale": 1
},
"trunk_width": 2,
"width_scale": 1,
"foliage_altitude_factor": 0.5,
"branches": {
"slope": 0.5,
"density": 0.2,
"min_altitude_factor": 0
}
},
//樹葉
"fancy_canopy": {
"height": 5,
"radius": 5,
"leaf_block": "bridge:leave_candy"
}
}
}
然後在feature_rules/
新增生成條件的candy_tree_feature.json
:
{
"format_version": "1.13.0",
"minecraft:feature_rules": {
"description": {
"identifier": "bridge:candy_tree_feature",
//要生成的feature
"places_feature": "bridge:candy_tree"
},
"conditions": {
//生成在表面或洞穴
"placement_pass": "before_surface_pass"
},
//生成散佈
"distribution": {
//生成機率,可超過100,鑽石為1
"iterations": 100,
"x": {
"distribution": "uniform",
"extent": [
0,
8
]
},
"y": {
"distribution": "uniform",
"extent": [
0,
"query.heightmap(variable.worldx, variable.worldz) * 1.5"
]
},
"z": {
"distribution": "uniform",
"extent": [
0,
8
]
}
}
}
}
範本下載#
世界選項測試版遊戲全部開啟,但1.17的新洞穴機制不要開。
按 這裡下載。
- Bedrock Wiki上的教學,裡面有各種屬性的詳細解釋。