快轉到主要內容

新增生態系並生成建築物|Minecraft基岩版Add-On模組製作教學

分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

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的新洞穴機制不要開。

這裡下載。

相關文章

新增mcfunction指令 & 自動執行指令|Minecraft基岩版Add-On模組製作教學
分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On
使用Minecraft Entity Wizard快速新增實體|Minecraft基岩版Add-On模組製作教學
分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On Minecraft Behavior Pack Minecraft Resource Pack
用Blockbench製作實體動畫|Minecraft基岩版Add-On模組製作教學
分類   遊戲攻略 Minecraft
標籤   Minecraft Add-On BlockBench

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。